Skip to content

[node.js] Promise wrapped Ebay requests with sensible response parsers

Notifications You must be signed in to change notification settings

ondreian/ebay-promised

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Promise-based module for working with the eBay API

Build Status Documentation

npm install ebay-promised --save

This module provides a succint, verbose way to build requests with the eBay API.

Currently it works in production applications with the eBay XML POST Trading API, and I have not properly fleshed out the other eBay services.

Most of the other services are GET based and query string driven.

Features

  • Bluebird Promises
  • Transparent pagination
  • Transparent eBay compliant rate-limiting
  • Reasonable response parsers
  • Functionally tested vs the Sandbox API
  • ergonomic chaining API with immutability
  • transparently can load instance from ENV vars
  • proper Error subclassing to enable verbose use of Promise.catch

How to use this module

Reading through the Functional Tests is a great way to familiarize yourself with some common API calls.

# Basic Setup

import Ebay   from 'ebay-promised'
import config from './config'

const ebay  = Ebay.create(config)
const {err} = Ebay.errors

ebay
  .GetMyeBaySelling()            // Transforms it to a sealed Request, global config can no longer change
  .ActiveList({ Include: true }) // Pass in a field,value
  .DetailLevel("ReturnAll")      // Pass in another field, value
  .run()                         // Run the request against the eBay API
  .then(handleSuccess)
  .catch(err.Ebay_Api_Error, err => {
    // this error is a special case
    // it means your HTTP request was successful but eBay did not like it
  })
  .catch( err = {
    // catch all other errors ala:
    // Network Errors
  })

// Ebay can also load your credentials from `process.env`

const envEbay = Ebay.fromEnv()

Supported Calls

All calls, fields, and globals that are currently defined live in ./es6/definitions

If you find a call that is missing, feel free to open an issue so it can be addressed, or make a pull request.

Pagination

Internally ebay-promised will attempt to detect when a request is paginated and go ahead and grab the subsequent pages for you and concatenate the results.

Utility methods

Pull requests are welcome.

Development

Building

To build the library (using bash):

set npm_package_config_in=es6
set npm_package_config_out=lib
npm run compile

Testing

To run tests:

For functional testing, you must have an eBay API Sandbox id setup, with correct keys and tokens. See Application Keys for details. Once you have the application keys, also click "User Tokens" on the same page, to set up or obtain your user authorization token.

Place these tokens into a file called test/fixtures/auth.private.js, exported as follows:

module.exports = {
    EBAY_APP_ID: 'YourAppId',
    EBAY_DEV_ID: 'YourDevId',
    EBAY_CERT: 'YourCertificate',
    EBAY_TOKEN: 'YourUserAuthToken',
};

and then:

npm test

About

[node.js] Promise wrapped Ebay requests with sensible response parsers

Resources

Stars

Watchers

Forks

Packages

No packages published