Popularity
5.7
Declining
Activity
0.0
Stable
32
3
23

Monthly Downloads: 29
Programming language: Elixir
License: MIT License
Tags: Third Party APIs    
Latest version: v0.2.1

amazon_product_advertising_client alternatives and similar packages

Based on the "Third Party APIs" category

Do you think we are missing an alternative of amazon_product_advertising_client or a related project?

Add another 'Third Party APIs' Package

README

Amazon Product Advertising Client

Configure

Add your AWS authentication credentials to config/config.exs:

Hex: https://hex.pm/packages/amazon_product_advertising_client


  # in your mix.exs
  {:amazon_product_advertising_client, "~> 0.2.1"}


# in your config/config.exs
config :amazon_product_advertising_client,
  associate_tag: "YourAssociateTag",
  aws_access_key_id: "YourAccessKeyID",
  aws_secret_access_key: "YourSecretAccessKey",
  marketplace_host: "webservices.amazon.ca" # If not specified the default value is webservices.amazon.com

Usage and Examples

Both of the functions return an %HTTPoison.Response{} struct. This Amazon API responds with XML, so you will most likely want to parse the body using a library such as SweetXml.

Create a search params struct and execute the search, for example:


alias AmazonProductAdvertisingClient.ItemSearch

def search_for_item do
  %ItemSearch{"MaximumPrice": "25", "Keywords": "long sleeve shirt"} |> ItemSearch.execute
end

Lookup


alias AmazonProductAdvertisingClient.ItemLookup

# e.g. an ISBN of 9781680502992
def lookup_book_by_isbn(isbn) do
  %ItemLookup{
      IdType: "ISBN",
      ItemId: isbn,
      SearchIndex: "Books"}
  |> ItemLookup.execute()
end

Lookup and Parse Response


# Modules needed.
alias AmazonProductAdvertisingClient.ItemLookup
import SweetXml

# Returns a map with 'title' and 'detail_page_url' keys
def lookup_book_info(isbn) do
  lookup_struct =
    %ItemLookup{
      IdType: "ISBN",
      ItemId: isbn,
      SearchIndex: "Books"}

  case ItemLookup.execute(lookup_struct) do
    {:ok, %HTTPoison.Response{body: body}} ->
      body |> parse_xml_body()
  end

end

# The XML response from Amazon is voluminous. There are many fields to retrieve,
# for this example we pull the book's title and Amazon URL.
def parse_xml_body(body) do
  body
  |> SweetXml.xmap(
    title: ~x"//ItemLookupResponse/Items/Item/ItemAttributes/Title/text()",
    detail_page_url: ~x"//ItemLookupResponse/Items/Item/DetailPageURL/text()",
    )
end