amazing

package module
v0.0.0-...-92c454c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 9, 2023 License: MIT Imports: 14 Imported by: 3

README

Go Client for the Amazon Product API

A golang client for the amazon product api. This is very much WIP but it's still quite usable for simple tasks such as lookup and search. Handles annoying things such as signature signing and xml -> struct mapping.

MIT license.

Install

go get github.com/dominicphillips/amazing

Configuration

Initialize a client with your ServiceDomain, AssociateTag, AWSAccessKeyId & AWSSecretKey. Service Domain may be one of the following:

CA
CN
DE
ES
FR
IT
JP
UK
US

client, err := amazing.NewAmazing("DE", "tag", "access", "secret")

Or from environment variables (recommended)

export AMAZING_ASSOCIATE_TAG=
export AMAZING_ACCESS_KEY=
export AMAZING_SECRET_KEY=

----------

client, err := amazing.NewAmazingFromEnv("DE")

Currently these operations are supported:

ItemLookup
result, err := client.ItemLookup(params)

ItemSearch
result, err := client.ItemSearch(params)

SimilarityLookup
result, err := client.SimilarityLookup(params)

Params are of type url.Values, for ItemLookup you would pass them like this:

params := url.Values{
  "IdType":        []string{"ASIN"},
  "ItemId":        []string{"B00BIYAO3K"},
  "Operation":     []string{"ItemLookup"},
}

result, err := client.ItemLookup(params)

Results are defined in response.go, you may also pass in your own structs to the Request() function directly:

client, _ := amazing.NewAmazingFromEnv("DE")

params := url.Values{
    "SearchIndex": []string{"All"},
    "Operation":   []string{"ItemSearch"},
    "Keywords":    []string{"Golang"},
}
type CustomResult struct {
    XMLName          xml.Name `xml:"ItemSearchResponse"`
    OperationRequest AmazonOperationRequest
    AmazonItems      AmazonItems `xml:"Items"`
}
var result CustomResult
err := client.Request(params, &result)

For a quick reference over the various parameters, response groups etc. check the quick reference card.

Sponsored by codesubmit.io and cactushire.com

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewTimeoutClient

func NewTimeoutClient(connectTimeout time.Duration, readWriteTimeout time.Duration) *http.Client

func TimeoutDialer

func TimeoutDialer(cTimeout time.Duration, rwTimeout time.Duration) func(net, addr string) (c net.Conn, err error)

Types

type Amazing

type Amazing struct {
	Config *AmazingClientConfig
}

func NewAmazing

func NewAmazing(domain, tag, access, secret string) (*Amazing, error)

func NewAmazingFromEnv

func NewAmazingFromEnv(domain string) (*Amazing, error)

func (*Amazing) ItemLookup

func (a *Amazing) ItemLookup(params url.Values) (*AmazonItemLookupResponse, error)

func (*Amazing) ItemLookupAsin

func (a *Amazing) ItemLookupAsin(asin string, extra url.Values) (*AmazonItemLookupResponse, error)

func (*Amazing) ItemSearch

func (a *Amazing) ItemSearch(params url.Values) (*AmazonItemSearchResponse, error)

func (*Amazing) MergeParamsWithDefaults

func (a *Amazing) MergeParamsWithDefaults(extra url.Values) url.Values

func (*Amazing) Request

func (a *Amazing) Request(params url.Values, result interface{}) error

func (*Amazing) SimilarityLookup

func (a *Amazing) SimilarityLookup(params url.Values) (*AmazonSimilarityLookupResponse, error)

type AmazingClientConfig

type AmazingClientConfig struct {
	ServiceDomain  []string
	AssociateTag   string
	AWSAccessKeyId string
	AWSSecretKey   string
}

type AmazonBrowseNode

type AmazonBrowseNode struct {
	BrowseNodeId string             `xml:"BrowseNodeId"`
	Name         string             `xml:"Name"`
	Ancestors    []AmazonBrowseNode `xml:"Ancestors>BrowseNode"`
}

type AmazonEditorialReview

type AmazonEditorialReview struct {
	Source  string
	Content string
}

type AmazonError

type AmazonError struct {
	Code      string `xml:"Error>Code"`
	Message   string `xml:"Error>Message"`
	RequestId string
}

func (*AmazonError) Error

func (a *AmazonError) Error() string

type AmazonImage

type AmazonImage struct {
	URL    string
	Height uint16
	Width  uint16
}

type AmazonImageSet

type AmazonImageSet struct {
	Category       string `xml:"Category,attr"`
	SwatchImage    AmazonImage
	SmallImage     AmazonImage
	ThumbnailImage AmazonImage
	TinyImage      AmazonImage
	MediumImage    AmazonImage
	LargeImage     AmazonImage
}

type AmazonItem

type AmazonItem struct {
	ASIN             string
	ParentASIN       string
	DetailPageURL    string
	SalesRank        string
	ItemLinks        []AmazonItemLink `xml:"ItemLinks>ItemLink"`
	SmallImage       AmazonImage
	MediumImage      AmazonImage
	LargeImage       AmazonImage
	ImageSets        []AmazonImageSet `xml:"ImageSets>ImageSet"`
	ItemAttributes   AmazonItemAttributes
	OfferSummary     AmazonItemOfferSummary
	EditorialReviews []AmazonEditorialReview `xml:"EditorialReviews>EditorialReview"`
	BrowseNodes      []AmazonBrowseNode      `xml:"BrowseNodes>BrowseNode"`
}

type AmazonItemAtributes

type AmazonItemAtributes AmazonItemAttributes

type AmazonItemAttributes

type AmazonItemAttributes struct {
	Title     string
	Brand     string
	ListPrice AmazonItemPrice
}
type AmazonItemLink struct {
	Description string
	URL         string
}

type AmazonItemLookupErrorResponse

type AmazonItemLookupErrorResponse struct {
	XMLName xml.Name
	AmazonError
}

type AmazonItemLookupRequest

type AmazonItemLookupRequest struct {
	Condition      string
	IdType         string
	ItemId         string
	ResponseGroups []string `xml:"ResponseGroup"`
	VariationPage  string
}

type AmazonItemLookupResponse

type AmazonItemLookupResponse struct {
	XMLName          xml.Name `xml:"ItemLookupResponse"`
	OperationRequest AmazonOperationRequest
	AmazonItems      AmazonItems `xml:"Items"`
}

type AmazonItemOfferSummary

type AmazonItemOfferSummary struct {
	LowestUsedPrice        AmazonItemPrice
	LowestNewPrice         AmazonItemPrice
	LowestCollectiblePrice AmazonItemPrice
}

type AmazonItemPrice

type AmazonItemPrice struct {
	Amount         int64
	CurrencyCode   string
	FormattedPrice string
}

type AmazonItemSearchResponse

type AmazonItemSearchResponse struct {
	XMLName          xml.Name `xml:"ItemSearchResponse"`
	OperationRequest AmazonOperationRequest
	AmazonItems      AmazonItems `xml:"Items"`
}

type AmazonItems

type AmazonItems struct {
	Request AmazonRequest
	Items   []AmazonItem `xml:"Item"`
}

type AmazonOperationRequest

type AmazonOperationRequest struct {
	HTTPHeaders           []AmazonOperationRequestHeader   `xml:"HTTPHeaders>Header"`
	Arguments             []AmazonOperationRequestArgument `xml:"Arguments>Argument"`
	RequestId             string
	RequestProcessingTime float64
}

type AmazonOperationRequestArgument

type AmazonOperationRequestArgument struct {
	Name  string `xml:"Name,attr"`
	Value string `xml:"Value,attr"`
}

type AmazonOperationRequestHeader

type AmazonOperationRequestHeader struct {
	Name  string `xml:"Name,attr"`
	Value string `xml:"Value,attr"`
}

type AmazonRequest

type AmazonRequest struct {
	IsValid           bool
	ItemLookupRequest AmazonItemLookupRequest
	Errors            []AmazonError
}

type AmazonSimilarityLookupResponse

type AmazonSimilarityLookupResponse struct {
	XMLName          xml.Name `xml:"SimilarityLookupResponse"`
	OperationRequest AmazonOperationRequest
	AmazonItems      AmazonItems `xml:"Items"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL