channelape-sdk
Version:
A client for interacting with ChannelApe's API
97 lines • 4.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Q = require("q");
const Resource_1 = require("../../model/Resource");
const Version_1 = require("../../model/Version");
const GenerateApiError_1 = require("../../utils/GenerateApiError");
const EXPECTED_GET_STATUS = 200;
const EXPECTED_PUT_STATUS = 200;
class SuppliersService {
constructor(client) {
this.client = client;
}
get(supplierIdOrRequest) {
if (typeof supplierIdOrRequest === 'string') {
return this.getSupplierById(supplierIdOrRequest);
}
return this.getSuppliersByRequest(supplierIdOrRequest);
}
create(supplier) {
const deferred = Q.defer();
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.SUPPLIERS}`;
const options = {
data: supplier
};
this.client.post(requestUrl, options, (error, response, body) => {
this.mapSupplierPromise(requestUrl, deferred, error, response, body, 201);
});
return deferred.promise;
}
update(supplier) {
const deferred = Q.defer();
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.SUPPLIERS}/${supplier.id}`;
this.client.put(requestUrl, { data: supplier }, (error, response, body) => {
this.mapSupplierPromise(requestUrl, deferred, error, response, body, EXPECTED_PUT_STATUS);
});
return deferred.promise;
}
getSupplierById(supplierId) {
const deferred = Q.defer();
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.SUPPLIERS}/${supplierId}`;
this.client.get(requestUrl, {}, (error, response, body) => {
this.mapSupplierPromise(requestUrl, deferred, error, response, body, EXPECTED_GET_STATUS);
});
return deferred.promise;
}
getSuppliersByRequest(suppliersRequest) {
return new Promise((resolve) => {
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.SUPPLIERS}`;
const options = {
params: suppliersRequest
};
this.client.get(requestUrl, options, (error, response, body) => {
const requestResponse = {
error,
response,
body
};
resolve(this.mapSuppliersPromise(requestUrl, requestResponse, EXPECTED_GET_STATUS));
});
});
}
mapSupplierPromise(requestUrl, deferred, error, response, body, expectedStatusCode) {
if (error) {
deferred.reject(error);
}
else if (response.status === expectedStatusCode) {
const supplier = this.formatSupplier(body);
deferred.resolve(supplier);
}
else {
const supplierApeErrorResponse = (0, GenerateApiError_1.default)(requestUrl, response, body, EXPECTED_GET_STATUS);
deferred.reject(supplierApeErrorResponse);
}
}
mapSuppliersPromise(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.suppliers.map(supplier => this.formatSupplier(supplier)));
}
else {
const supplierApeErrorResponse = (0, GenerateApiError_1.default)(requestUrl, requestCallbackParams.response, requestCallbackParams.body, EXPECTED_GET_STATUS);
reject(supplierApeErrorResponse);
}
});
}
formatSupplier(supplier) {
supplier.createdAt = new Date(supplier.createdAt);
supplier.updatedAt = new Date(supplier.updatedAt);
return supplier;
}
}
exports.default = SuppliersService;
//# sourceMappingURL=SuppliersService.js.map