Skip to content

Node.js client for the Amazon Product Advertising API [WIP]

Notifications You must be signed in to change notification settings

t3chnoboy/apac2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node.js client for the Amazon Product Advertising API NPM version Dependency Status Build Status

Next generation Node.js client for Amazon Product Advertising API

NPM

The major differences between this project and other implementations are:

  1. Item search can return an EcmaScript6 promise. (Check out a great article about ES6 promises)
  2. Item search is "yieldable". So it plays well with fantastic next-gen libs such as Koa and Co. See example
  3. Item search can return a stream. (You can read about streams here)

#NOTE. This module in development and not published to npm yet. #XML parsing is not implemented yet

Installation

Install using npm:

npm install apac2

Usage

###Basic usage

Require library

amazon = require('apac2');

Create client

var client = amazon.createClient({
	awsId: "aws ID",
	awsSecret: "aws Secret",
 	awsTag: "aws Tag"
});

Now you can search for items on amazon:

using promises:

client.itemSearch({
	keywords: 'Pulp fiction',
	searchIndex: 'DVD',
    responseGroup: 'ItemAttributes,Offers,Images'
}).then(function(results){
	console.log(results);
}).catch(function(err){
	console.log(err);
});

using a callback:

client.itemSearch({
  keywords: 'Pulp fiction',
  searchIndex: 'DVD',
  responseGroup: 'ItemAttributes,Offers,Images'
}, function(err, results) {
  if (err) {
    console.log(err);
  } else {
    console.log(results);
  }
});

using a stream:

client.itemSearchStream({
  keywords: 'Pulp fiction',
  searchIndex: 'DVD',
  responseGroup: 'ItemAttributes,Offers,Images'
}).pipe(process.stdout);

using ecmascript6 generators and co

var co = require('co');

co(function *(){

  pulpFiction   = client.itemSearch({ keywords: 'Pulp fiction',   searchIndex: 'DVD'});
  killBill      = client.itemSearch({ keywords: 'Kill Bill',      searchIndex: 'DVD'});
  reservoirDogs = client.itemSearch({ keywords: 'Reservoir Dogs', searchIndex: 'DVD'});

  movies = yield [pulpFiction, killBill, reservoirDogs];
  console.log(movies);

})();

###Search query options:

condition: availiable options - 'All', 'New', 'Used', 'Refurbished', 'Collectible'. Defaults to 'All'
keywords: Defaults to ''
responseGroup: You can use multiple values by separating them with comma (e.g responseGroup: 'ItemAttributes,Offers,Images'). Defaults to'ItemAttributes'
searchIndex: Defaults to 'All'.

##Example ###Setup your own server that doesn't require signatures and timestamp

var amazon = require('apac2');
var express = require('express');

var app = express();

var client = amazon.createClient({
  awsTag: process.env.AWS_TAG,
  awsId: process.env.AWS_ID,
  awsSecret: process.env.AWS_SECRET
});


app.get('/amazon/:index', function(req, res){
  client.itemSearchStream({
    keywords: req.query.title,
    searchIndex: req.params.index,
    responseGroup: 'ItemAttributes,Offers,Images'
  }).pipe(res);

});

app.listen(3000);

About

Node.js client for the Amazon Product Advertising API [WIP]

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages