UNPKG

feathers-shippo

Version:

A Feathers JS adapter for the Shippo API

49 lines (48 loc) 1.79 kB
import { BadRequest } from '@feathersjs/errors'; import { ShippoService, shippoLimiter, calcMinTime } from '../service'; // https://goshippo.com/docs/rate-limits/ const liveMinTimes = { create: calcMinTime(500), update: calcMinTime(500), get: calcMinTime(500), find: calcMinTime(500), remove: calcMinTime(500) }; const testMinTimes = { create: calcMinTime(50), update: calcMinTime(50), get: calcMinTime(50), find: calcMinTime(50), 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 ShippoTracks extends ShippoService { constructor(options, app) { options = Object.assign(Object.assign({ limiters: shippoLimiters(options.token) }, options), { path: 'tracks', methods: ['get', 'create'] }); super(options, app); } _get(id, params) { var _a; if (!((_a = params === null || params === void 0 ? void 0 : params.query) === null || _a === void 0 ? void 0 : _a.carrier)) { throw new BadRequest('params.query.carrier is required'); } const shippoParams = Object.assign(Object.assign({}, params), { query: Object.assign({}, params.query) }); const carrier = shippoParams.query.carrier; delete shippoParams.query.carrier; return this.resource .get(`${carrier}/${id}`, shippoParams) .then(this.handleResult) .catch(this.handleError); } }