@stylusapparel/opv3-merchant-api-nodejs
Version:
This is the official NodeJs wrapper for connecting to the StylusOP API V3
185 lines (183 loc) • 7.33 kB
JavaScript
;
const __error = require('./error');
const __response = require('./response');
const { __defaults } = require('../constants/url');
const http = require('./http');
module.exports = (_merchantId, _token, __config) => {
const { merchantName } = __config;
const httpInstance = http(_merchantId ?? merchantName, _token, __config);
const __this = {
/**
* Fetches a list of orders for the merchant.
* @param {Object} [params={}] - Query parameters to filter the orders.
* @param {number} [params.limit] - Limit the number of orders returned.
* @param {number} [params.offset] - Offset for pagination.
* @param {string} [params.status] - Filter orders by status.
* @returns {Promise<Object[]>} Promise resolving to an array of orders.
*/
_getOrders: (params = {}) => {
// console.log('Getting orders with params: ', params);
return new Promise((resolve, reject) => {
httpInstance
.get('/merchant/' + merchantName + __defaults.ORDERS_URI, { params })
.then(function (response) {
if (response.status === 200) {
resolve(__response._ordersFetch(response.data));
} else {
reject(__error._ordersFetchError(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._ordersFetchError(_errorDetails, _errorCode));
});
});
},
_getOrder: (orderId) => {
return new Promise((resolve, reject) => {
httpInstance
.get('/merchant/' + merchantName + __defaults.ORDERS_URI + '/' + orderId)
.then(function (response) {
if (response.status === 200) {
resolve(__response._orderFetch(response.data));
} else {
reject(__error._orderFetchError(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._orderFetchError(_errorDetails, _errorCode));
});
});
},
// _getBulkOrderStatus: (orderIds) => {
// return new Promise((resolve, reject) => {
// httpInstance
// .get(__defaults.ORDERS_URI + '/status/bulk/vendor/' + merchantName + '?orderIds=' + orderIds)
// .then(function (response) {
// if (response.status === 200) {
// resolve(__response._bulkOrderStatus(response.data));
// } else {
// reject(__error._orderFetchError(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._orderFetchError(_errorDetails, _errorCode));
// });
// });
// },
// _getOrderStatus: (orderId) => {
// return new Promise((resolve, reject) => {
// httpInstance
// .get( '/merchant/' + merchantName + __defaults.ORDERS_URI + orderId)
// .then(function (response) {
// if (response.status === 200) {
// resolve(__response._orderStatus(response.data));
// } else {
// reject(__error._orderFetchError(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._orderFetchError(_errorDetails, _errorCode));
// });
// });
// },
_getOrderActivity: (orderId) => {
return new Promise((resolve, reject) => {
httpInstance
.get('/merchant/' + merchantName + __defaults.ORDERS_URI + '/' + orderId + '/activities')
.then(function (response) {
if (response.status === 200) {
resolve(__response._orderActivity(response.data));
} else {
reject(__error._orderActivityError(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._orderActivityError(_errorDetails, _errorCode));
});
});
},
_pushOrder: (orderObj) => {
return new Promise((resolve, reject) => {
httpInstance
.post('/merchant/' + merchantName + __defaults.ORDERS_URI, orderObj)
.then(function (response) {
if (response.status === 200 || response.status === 201) {
resolve(__response._orderPush(response.data));
} else {
reject(__error._orderPushError(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._orderPushError(_errorDetails, _errorCode));
});
});
},
_cancelOrder: (orderId, cancelObj) => {
return new Promise((resolve, reject) => {
httpInstance
.patch('/merchant/' + merchantName + __defaults.ORDERS_URI + '/' + orderId + '/cancel', cancelObj)
.then(function (response) {
if (response.status === 200) {
resolve(__response._orderCancel(response.data));
} else {
reject(__error._orderCancelError(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._orderCancelError(_errorDetails, _errorCode));
});
});
},
_orderUpdate: (orderId, updateObj) => {
return new Promise((resolve, reject) => {
httpInstance
.put('merchant/' + merchantName + __defaults.ORDERS_URI + '/' + orderId, updateObj)
.then(function (response) {
if (response.status === 200) {
resolve(__response._orderUpdate(response.data));
} else {
reject(__error._orderUpdateError(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._orderUpdateError(_errorDetails, _errorCode));
});
});
},
_orderUpdateItems: (orderId, updateObj) => {
return new Promise((resolve, reject) => {
httpInstance
.patch('merchant/' + merchantName + __defaults.ORDERS_URI + '/' + orderId + '/items', updateObj)
.then(function (response) {
if (response.status === 200) {
resolve(__response._orderUpdate(response.data));
} else {
reject(__error._orderUpdateError(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._orderUpdateError(_errorDetails, _errorCode));
});
});
},
};
return __this;
};