UNPKG

@move-lab/shippify-node

Version:

This library allows you to quickly use Shippify API with NodeJS

131 lines (106 loc) 3.87 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios); var _Delivery = require('./objects/Delivery'); var _Delivery2 = _interopRequireDefault(_Delivery); var _Quotes = require('./objects/Quotes'); var _Quotes2 = _interopRequireDefault(_Quotes); var _Quote = require('./objects/Quote'); var _Quote2 = _interopRequireDefault(_Quote); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var setting = { key: '', secret: '', endpoint: 'https://api.shippify.co' }; var endpoints = { 'quotes': '/v1/deliveries/quotes', 'deliveries': '/v1/deliveries', 'deliveries/complete': '/v1/deliveries/{:id}/complete', 'deliveries/token': '/v1/deliveries/token/{:id}', 'deliveries/labels': '/v1/deliveries/{:ids}/labels', 'deliveries/cancel': '/v1/deliveries/{:id}/cancel', 'draft': '/v1/deliveries/drafts', 'webhook': '/hooks/companies/{:company}' }; function headers() { var basic = Buffer.from(setting.key + ':' + setting.secret, 'ascii'); return { 'Content-Type': 'application/json', Authorization: 'Basic ' + basic.toString('base64') }; } function initialize(key, secret, endpoint) { setting.key = key; setting.secret = secret; setting.endpoint = endpoint || setting.endpoint; } /* REQUESTs */ var request = { get: async function get(uri) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return _axios2.default.get('' + setting.endpoint + uri, Object.assign(options, { headers: headers() })); }, post: async function post(uri, data) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; return _axios2.default.post('' + setting.endpoint + uri, data, Object.assign(options, { headers: headers() })); } }; async function quotes() { var delivery = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var opts = Object.assign({ // date: date.getTime(), express: false, flexible: true, limit: null, timeslots: true }, options); var deliveries = [].concat(delivery).map(function (delivery) { if (delivery.pickup && date) { delivery.pickup.date = new Date(date).getTime(); } return delivery; }); var quotesResponse = await request.post(endpoints['quotes'], Object.assign({ deliveries: deliveries }, opts)); return _Quotes2.default.parse(quotesResponse.data); } async function deliveries(deliveries, quoteId) { var metadata = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; var deliveryRequest = Object.assign({ deliveries: deliveries.map(function (delivery) { return Object.assign(delivery, metadata); }), quoteId: quoteId }, options); var deliveryResponse = await request.post(endpoints['deliveries'], deliveryRequest); return deliveryResponse.data.payload; } deliveries.cancel = async function deliveryCancel(id) { var deliveryCancelResponse = await request.post(endpoints['deliveries/cancel'].replace('{:id}', id)); return deliveryCancelResponse.data; }; deliveries.complete = async function deliveryCancel(id) { var deliveryCancelResponse = await request.post(endpoints['deliveries/complete'].replace('{:id}', id)); return deliveryCancelResponse.data; }; exports.default = { initialize: initialize, quotes: quotes, deliveries: deliveries, // Objects Delivery: _Delivery2.default, Quotes: _Quotes2.default, Quote: _Quote2.default };