UNPKG

feathers-shippo

Version:

A Feathers JS adapter for the Shippo API

59 lines (58 loc) 1.98 kB
import { ShippoService, axiosOpts, shippoLimiter, calcMinTime } from '../service'; // https://goshippo.com/docs/rate-limits/ const liveMinTimes = { create: calcMinTime(50), update: calcMinTime(50), get: calcMinTime(400), find: calcMinTime(50), remove: calcMinTime(50) }; const testMinTimes = { create: calcMinTime(5), update: calcMinTime(5), get: calcMinTime(40), find: calcMinTime(5), remove: calcMinTime(50) }; const shippoLimiters = (token) => { const minTimes = token.startsWith('shippo_live') ? liveMinTimes : testMinTimes; return { create: shippoLimiter('create', minTimes), update: shippoLimiter('update', minTimes), get: shippoLimiter('get', minTimes), find: shippoLimiter('find', minTimes), remove: shippoLimiter('remove', minTimes) }; }; export class ShippoBatches extends ShippoService { constructor(options, app) { options = Object.assign(Object.assign({ limiters: shippoLimiters(options.token) }, options), { path: 'batches', methods: ['get', 'create'] }); super(options, app); } _update(id, data, params) { return this.schedule('create', () => { return this.shippo .post(`batches/${id}/add_shipments`, data, axiosOpts(params)) .then(this.handleResult) .catch(this.handleError); }); } _patch(id, data, params) { return this.schedule('create', () => { return this.shippo .post(`batches/${id}/remove_shipments`, data, axiosOpts(params)) .then(this.handleResult) .catch(this.handleError); }); } _remove(id, params) { return this.schedule('create', () => { return this.shippo .post(`batches/${id}/purchase`, axiosOpts(params)) .then(this.handleResult) .catch(this.handleError); }); } }