angarum
Version:
A library which helps you focus on your delivery.
142 lines (126 loc) • 3.74 kB
JavaScript
var Template = require('./template.js');
var querystring = require('querystring');
var _ = require("lodash");
var username = process.env["NUVOEX_USERNAME"];
var password = process.env["NUVOEX_PASSWORD"];
var host = process.env["NUVOEX_HOST"];
var auth = "Basic " + new Buffer(username + ":" + password).toString('base64');
// Declare partner specific variables here.
// Check out other partners for more information.
module.exports = Template.extend('NuvoEx', {
init: function() {
this._super(host);
},
order: function(params, cb) {
var url = "/api/manifest/upload";
// Check out Order schema file for more information.
var awb = null;
params.map([], {
"reference_number" : "AWB",
"invoice_number" : "CLIENT ORDER NO",
"from_name": "CUST NAME",
"from_address": "CUST ADDRESS LINE 1",
"from_city": ["CUST ADDRESS LINE 2", "CUST CITY"],
"from_pin_code": "Pincode",
"from_mobile_number": ["PHONE 1", "PHONE 2"],
"weight": "Weight",
"item_name": "PACKAGE DESCRIPTION",
"declared_value": "PACKAGE VALUE",
"reasons": "Reason for Return",
"quantity": "quantity"
}, function(inp) {
awb = inp.AWB;
var city = inp["to_city"].toLowerCase();
if (city.indexOf("new delhi") >= 0)
inp["Dest Code"] = "ELC WH - DELHI"
else if (city.indexOf("bangalore") >= 0)
inp["Dest Code"] = "ELC WH - BANGALORE"
else
inp["Dest Code"] = "ELC WH - BANGALORE"
return {
data: JSON.stringify([inp]),
};
});
params.out_map({
"status": "success",
"msg": "err",
}, function(out) {
if (String == out.constructor)
out = JSON.parse(out);
if (out.error_data && awb in out.error_data)
out.err = out.error_data[awb];
else
out.awb = awb;
return out;
});
var body = querystring.stringify(params.get());
return this.post_req(url, params, cb, { headers: {
"Authorization": auth,
"Content-Type": 'application/x-www-form-urlencoded',
}, json: null, body: body});
},
track: function(params, cb) {
params.set({"tracking_url": this.get_tracking_url(params.get().awb_number) });
return cb(null, params);
},
get_tracking_url: function(awb) {
var url = "http://www.nuvoex.com/awb_detail.html?awb=";
url += awb;
return url;
},
single_tracking_status: function(params, cb) {
var url = "http://ship.nuvoex.com/transit/tracking/awb/" + params.get().awb_number;
var awb = params.get().awb_number;
params.set({});
params.out_map({
}, function(out) {
if (String == out.constructor)
out = JSON.parse(out);
if (out.history) {
out.success = true;
out.error = "";
var details = [];
for (key in out.history) {
var status = out.history[key];
status.description = status.remark;
status.location = status.branch;
details.push(status);
}
out.details = details;
}
else {
out.success = false;
out.error = "Invalid AWB";
}
out.awb = awb;
return out;
});
return this.get_req(url, params, cb, {url: url});
},
cancel: function(params, cb) {
var url = "/api/awb/update/cancel/";
var awb = null;
params.map([], {
"awb" : "awbs",
}, function(inp) {
awb = inp.awbs;
inp.awbs = [inp.awbs];
return inp;
});
params.out_map({
"status": "success",
"msg": "err",
}, function(out) {
if (String == out.constructor)
out = JSON.parse(out);
if (!out.success && out.rejected_awbs)
out.err = out.rejected_awbs[awb];
return out;
});
var body = querystring.stringify(params.get());
return this.post_req(url, params, cb, { headers: {
"Authorization": auth,
"Content-Type": 'application/x-www-form-urlencoded',
}, json: null, body: body});
},
});