1.2.0 • Published 4 years ago

parcel-tracker-api v1.2.0

Weekly downloads
4
License
MIT
Repository
github
Last release
4 years ago

Parcel Tracker Api

npm version download

Parcel tracker for Node.js

Installation

Using npm:

npm install parcel-tracker-api

Supported carrier

  • DHL
  • UPS
  • Colissimo
  • Chronopost
  • Royal Mail

Usage

  • Node.js
const Tracker = require('parcel-tracker-api');
  • ES6 Import
import {Tracker} from "parcel-tracker-api";

API

Tracker configuration

You can configure the tracker by using a TrackerConfig object.

Api keys

Many carriers needs a api key to use their API's. You need to put them in the config object !.

Example:

const config = {
    apiKeys: {
        laPoste: 'API_KEY', // For Colissimo and Chronopost API
        DHL: 'API_KEY',
        royalMail: 'CLIENT_ID;CLIENT_SECRET',
    }
};

const tracker = new Tracker(config);

Disable CORS

Many carrier api's do not support CORS, which can be a problem if we want to use the API on front-end applications.

To bypass this problem you can use the enableCrossOrigin. With this option requests may be longer than expected, it's because a proxy to put CORS headers is used.

Example:

const config = {
    enableCrossOrigin: true,
};

const tracker = new Tracker(config);

getTrackingInformations(trackingNumber, carrier, config)

  • Return tracking informations for a given tracking number and carrier
    • @param {string} trackingNumber: Tracking number
    • @param {string} carrier: Carrier name
    • @param {TrackerConfig} config: Tracking configaration can be optionnal
    • @return {ParcelInformations} parcel's informations
const config = {
    apiKeys: {
        DHL: 'API_KEY'
    }
};

const tracker = new Tracker(config);

tracker.getTrackingInformations('TRACKING_NUMBER', 'DHL').then((response) => {
    // DO WORK
})

You can use a specific tracker configuration for a unique request, it will override the default one

const defaultConfig = {
    apiKeys: {
        DHL: 'API_KEY'
    }
};

const specificOne = {
    enableCrossOrigin: true
};

const tracker = new Tracker(config);

tracker.getTrackingInformations('TRACKING_NUMBER', 'DHL', specificOne).then((response) => {
    // DO WORK
})

ParcelInformations

{
    //  Carrier used to get data
    carrier: string;

    // True if the parcel is delivered
    isDelivered: boolean;

    // Tracking events
    events: ParcelEvent[];

    // Tracker number
    trackingNumber: string;

    // The last status provided by the carrier
    status?: string;

    // Date of the last event
    lastUpdate?: Date;

    // Date of the first event
    entryDate?: Date;

    // Raw response from the api
    raw: any;
}

ParcelEvent

{
    // Label of the event
    label: string;
    
    // Event's date
    date: Date;
    
    // Event's location if it provided by the carrier
    location?: string;
}

getCarrier(trackingNumber)

  • Return the possible carriers for a given tracking number
    • @param {string} trackingNumber: Tracking number
    • @return {Array} possible carriers founds
      const tracker = new Tracker();

tracker.getCarrier('1Z9999999999999999') // => 'UPS'

### getCarriersList()
* Return all available carriers
  * @return {**Array<string>**} carriers

 ````javascript
const tracker = new Tracker();

tracker.getCarriersList() // => ['UPS', 'DHL', 'Colissimo', ...]

License

MIT