feathers-shippo
Version:
A Feathers JS adapter for the Shippo API
49 lines (48 loc) • 1.79 kB
JavaScript
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);
}
}