Next generation Node.js client for Amazon Product Advertising API
The major differences between this project and other implementations are:
- Item search can return an EcmaScript6 promise. (Check out a great article about ES6 promises)
- Item search is "yieldable". So it plays well with fantastic next-gen libs such as Koa and Co. See example
- 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
Install using npm:
npm install apac2
###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);