channelape-sdk
Version:
A client for interacting with ChannelApe's API
83 lines • 3.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const RestService_1 = require("../../service/RestService");
const Q = require("q");
const Resource_1 = require("../../model/Resource");
const Version_1 = require("../../model/Version");
const SubResource_1 = require("../../model/SubResource");
const uuidV4 = require("uuid/v4");
const GenerateApiError_1 = require("./../../utils/GenerateApiError");
const InventoryBatchAdjustmentsService_1 = require("./InventoryBatchAdjustmentsService");
class InventoryQuantitiesService extends RestService_1.default {
constructor(client, inventoriesService, locationsService) {
super();
this.client = client;
this.inventoriesService = inventoriesService;
this.locationsService = locationsService;
this.EXPECTED_POST_STATUS = 201;
this.EXPECTED_GET_STATUS = 200;
this.inventoryBatchAdjustmentsService = new InventoryBatchAdjustmentsService_1.InventoryBatchAdjustmentsService(this, this.inventoriesService, this.locationsService);
}
adjust(adjustmentRequest) {
return this.createQuantityAdjustment(adjustmentRequest, SubResource_1.default.ADJUSTS);
}
adjustBatch(adjustmentsBySku) {
return this.inventoryBatchAdjustmentsService.adjustBatch(adjustmentsBySku);
}
setBatch(adjustmentsBySku) {
return this.inventoryBatchAdjustmentsService.setBatch(adjustmentsBySku);
}
set(adjustmentRequest) {
return this.createQuantityAdjustment(adjustmentRequest, SubResource_1.default.SETS);
}
retrieve(inventoryItemId) {
return this.retrieveInventoryItemQuantities(inventoryItemId);
}
retrieveInventoryItemQuantities(inventoryItemId) {
return new Promise((resolve) => {
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.INVENTORIES}/${inventoryItemId}/${SubResource_1.default.QUANTITIES}`;
this.client.get(requestUrl, {}, (error, response, body) => {
const requestResponse = {
error,
response,
body
};
resolve(this.mapInventoryItemsQuantitiesPromise(requestUrl, requestResponse, this.EXPECTED_GET_STATUS));
});
});
}
createQuantityAdjustment(adjustmentRequest, operation) {
const deferred = Q.defer();
const inventoryItemId = adjustmentRequest.inventoryItemId;
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.INVENTORIES}/${inventoryItemId}/${SubResource_1.default.QUANTITIES}/${operation}`;
let idempotentKey = uuidV4();
if (adjustmentRequest.idempotentKey) {
idempotentKey = adjustmentRequest.idempotentKey;
}
const options = {
data: adjustmentRequest,
headers: {
'X-Channel-Ape-Idempotent-Key': idempotentKey
}
};
this.client.post(requestUrl, options, (error, response, body) => this.mapResponseToPromise(requestUrl, deferred, error, response, body, this.EXPECTED_POST_STATUS));
return deferred.promise;
}
mapInventoryItemsQuantitiesPromise(requestUrl, requestCallbackParams, expectedStatusCode) {
return new Promise((resolve, reject) => {
if (requestCallbackParams.error) {
reject(requestCallbackParams.error);
}
else if (requestCallbackParams.response.status === expectedStatusCode) {
const data = requestCallbackParams.body;
resolve(data.quantities);
}
else {
const channelApeErrorResponse = (0, GenerateApiError_1.default)(requestUrl, requestCallbackParams.response, requestCallbackParams.body, this.EXPECTED_GET_STATUS);
reject(channelApeErrorResponse);
}
});
}
}
exports.default = InventoryQuantitiesService;
//# sourceMappingURL=InventoryItemQuantitiesService.js.map