Skip to content

Node module, promise oriented ebay api interface. Trading API

Notifications You must be signed in to change notification settings

danielecr/qebayapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qebayapi

Promise oriented ebay api interface. Trading API.

eBay Trading API support xml and soap. This implementation use xml interface. It is almost asynchronous via Kriskoval's Q implemenation of promise.

Just one call now.

var ebayapi = require("qebayapi");

var options = {appName: '...','appCert':'...','devName':'...','callname':'GetItem','requestJSON':{'ItemID':'341341341'}, parseMode: 'json' };

ebayapi.TradingApi(options)
.then(function(response) {
  console.log(response.response.Ack);
  console.log('response': response.response);
});

It use q-io, so it is almost asynchronous, something could be improved in this field for request xml creation phase.

https://github.com/benbuckman/nodejs-ebay-api is another nodejs module for ebay api interface

qebayapi have a number of advance over nodejs-ebay-api related to ebay trading api

Advance over other implementation

It has a single parameter structured, it means complete isolation of every call from each other, ie you can use it concurrently for a number of ebay application (say sandbox and production app), or response type required.

You have the control with little switches, parseMode: json, xmlNode, xmlString let you choose what to get back based on your need. (extending this with other parsing method is out of scope)

Input switch, rMode : json, xmlNode, xmlString. Let you manage your request as you need, ie manipulate and resend to the eBay, without transforming those in json for passing the library: hey, the eBay trading api is already xml, skip unuseful translations.

It use q promise from kriskowal and q-io, it is completely asynchronous (at least for what is sensible).

It verify legal call name! This option could be disabled, but it verify if the callname you pass is in trading api call list, and fail if not conforming. [a simple code to paste into console while surfing ebay api site to generate the callname list is in index.js code as comment:

var apiCallNames = [];
$("table tr td:first-child a").each(function(a,b,c) { apiCallNames.push(b.text); });
console.log(JSON.stringify(apiCallNames));
// from chrome console url: developer.ebay.com/Devzone/xml/docs/Reference/eBay/index.html

]

It is only trading api. Only ebay trading api. It is separate because it use only xml protocol and there are no other way to comminicate with trading api.

Its variable scope is simple, clean, no massive reference to local variable, strong isolation.

Code improvements

Separate concerns:

  1. request creation in its own class, then use strategy pattern: what is rMode (request mode)? 'json', 'xmlNode', 'xmlString' and ... how to extend it? function or {preparse:function(opts), create:function(opts), createHeaders: function(opts) }
  2. parse response: parseMode == 'json' or ... function(opts)

Rationale:

  • testing: make ebayXml2JsonParse testable
  • improving api. i.e. callname based options

Credits

This project was developed as opensource library for actracting and promoting collaborative developer, but was part of a wider project developer for LinguisticStudio.it (https://linguisticstudio.it/)

About

Node module, promise oriented ebay api interface. Trading API

Resources

Stars

Watchers

Forks

Packages

No packages published