@stylusapparel/stylusop-api-node-wrapper
Version:
This is the official NodeJs wrapper for connecting to the StylusOP API
88 lines (86 loc) • 3.41 kB
JavaScript
;
const __error = require('./error');
const __response = require('./response');
const { __defaults } = require('../constants/url');
const http = require('./http');
module.exports = (_token, __config) => {
const httpInstance = http(_token, __config);
const { username } = __config;
const __this = {
_getProduct: (productId) => {
return new Promise((resolve, reject) => {
httpInstance
.get(__defaults.GET_PRODUCTS_URI + productId + '/vendor/' + username)
.then(function (response) {
if (response.status === 200) {
resolve(__response._productFetch(response.data));
} else {
reject(__error._productFetchError(response.data, response.status));
}
})
.catch(function (error) {
const _errorCode = (error && error.response && error.response.status) || 500;
const _errorDetails = (error && error.response && error.response.data) || {};
reject(__error._productFetchError(_errorDetails, _errorCode));
});
});
},
_listProducts: () => {
return new Promise((resolve, reject) => {
httpInstance
.get(__defaults.GET_PRODUCTS_URI + '/vendor/' + username)
.then(function (response) {
if (response.status === 200) {
resolve(__response._productList(response.data));
} else {
reject(__error._productFetchError(response.data, response.status));
}
})
.catch(function (error) {
const _errorCode = (error && error.response && error.response.status) || 500;
const _errorDetails = (error && error.response && error.response.data) || {};
reject(__error._productFetchError(_errorDetails, _errorCode));
});
});
},
_searchProducts: ({ offset = 0, limit = 0, keyword = '', productIds = [] }) => {
return new Promise((resolve, reject) => {
httpInstance
.get(
__defaults.GET_PRODUCTS_URI + 'search/vendor/' + username + '?offset=' + offset + '&limit=' + limit + '&keyword=' + keyword + '&productIds=' + JSON.stringify(productIds || []),
)
.then(function (response) {
if (response.status === 200) {
resolve(__response._productSearch(response.data));
} else {
reject(__error._productSearchError(response.data, response.status));
}
})
.catch(function (error) {
const _errorCode = (error && error.response && error.response.status) || 500;
const _errorDetails = (error && error.response && error.response.data) || {};
reject(__error._productSearchError(_errorDetails, _errorCode));
});
});
},
_findVariants: ({ variantIds = [] }) => {
return new Promise((resolve, reject) => {
httpInstance
.get(__defaults.GET_PRODUCTS_URI + 'variants/find/vendor/' + username + '?variantIds=' + JSON.stringify(variantIds || []))
.then(function (response) {
if (response.status === 200) {
resolve(__response._variantFind(response.data));
} else {
reject(__error._variantFindError(response.data, response.status));
}
})
.catch(function (error) {
const _errorCode = (error && error.response && error.response.status) || 500;
const _errorDetails = (error && error.response && error.response.data) || {};
reject(__error._variantFindError(_errorDetails, _errorCode));
});
});
},
};
return __this;
};