delivery-tracker
Advanced tools
Comparing version 1.0.0 to 1.1.0
@@ -0,1 +1,4 @@ | ||
# 1.0.0 | ||
* add CJ Korea Express. | ||
# 0.9.4 | ||
@@ -2,0 +5,0 @@ * Added exception logic for unaligned shipping information. |
@@ -71,17 +71,19 @@ 'use strict' | ||
module.exports = { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
module.exports = function (opts) { | ||
return { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
request(tracking, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
request(tracking, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
var results = parser.trace(body.QueryTrackEventsResponse.TrackingResults) | ||
var results = parser.trace(body.QueryTrackEventsResponse.TrackingResults) | ||
cb(results[0] ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), results[0]) | ||
}) | ||
cb(results[0] ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), results[0]) | ||
}) | ||
} | ||
} | ||
} |
@@ -63,19 +63,21 @@ 'use strict' | ||
module.exports = { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
module.exports = function (opts) { | ||
return { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
}) | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
}) | ||
} | ||
} | ||
} |
@@ -73,18 +73,20 @@ 'use strict' | ||
module.exports = { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
module.exports = function (opts) { | ||
return { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
}) | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
}) | ||
} | ||
} | ||
} |
@@ -86,21 +86,23 @@ 'use strict' | ||
module.exports = { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
module.exports = function (opts) { | ||
return { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data, | ||
json: true | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data, | ||
json: true | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
var results = parser.trace(body.TrackPackagesResponse.packageList) | ||
var results = parser.trace(body.TrackPackagesResponse.packageList) | ||
cb(null, results[0]) | ||
}) | ||
cb(null, results[0]) | ||
}) | ||
} | ||
} | ||
} |
@@ -129,23 +129,25 @@ 'use strict' | ||
module.exports = { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var invalidNumber = validate(number) | ||
if (invalidNumber !== null) { | ||
return cb(tracker.error(invalidNumber)) | ||
} | ||
var tracking = trackingInfo(number) | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
module.exports = function (opts) { | ||
return { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var invalidNumber = validate(number) | ||
if (invalidNumber !== null) { | ||
return cb(tracker.error(invalidNumber)) | ||
} | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
}) | ||
var tracking = trackingInfo(number) | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
}) | ||
} | ||
} | ||
} |
@@ -171,76 +171,78 @@ 'use strict' | ||
module.exports = { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
var result = { | ||
courier: PANTOS_COURIER, | ||
number: number, | ||
status: tracker.STATUS.PENDING, | ||
checkpoints: [] | ||
} | ||
module.exports = function (opts) { | ||
return { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
var result = { | ||
courier: PANTOS_COURIER, | ||
number: number, | ||
status: tracker.STATUS.PENDING, | ||
checkpoints: [] | ||
} | ||
async.waterfall([ | ||
function (cb) { | ||
// fetch summary information | ||
request.post({ | ||
url: tracking.summary.url, | ||
form: tracking.summary.data | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
parser.summary(body, cb) | ||
}) | ||
}, | ||
function (summary, cb) { | ||
result.number = summary.number | ||
if (summary.external && summary.external.number) { | ||
return trackingExternalCheckpoint(summary.external, function (err, checkpoints) { | ||
async.waterfall([ | ||
function (cb) { | ||
// fetch summary information | ||
request.post({ | ||
url: tracking.summary.url, | ||
form: tracking.summary.data | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
result.checkpoints = checkpoints | ||
cb() | ||
parser.summary(body, cb) | ||
}) | ||
} | ||
cb() | ||
}, | ||
function (cb) { | ||
// fetch checkpoints | ||
request.post({ | ||
url: tracking.events.url, | ||
form: tracking.events.data | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
}, | ||
function (summary, cb) { | ||
result.number = summary.number | ||
if (summary.external && summary.external.number) { | ||
return trackingExternalCheckpoint(summary.external, function (err, checkpoints) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
result.checkpoints = checkpoints | ||
cb() | ||
}) | ||
} | ||
cb() | ||
}, | ||
function (cb) { | ||
// fetch checkpoints | ||
request.post({ | ||
url: tracking.events.url, | ||
form: tracking.events.data | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
parser.checkpoints(body, cb) | ||
}) | ||
}, | ||
function (checkpoints, cb) { | ||
if (result.checkpoints.length > 0) { | ||
result.checkpoints = result.checkpoints.concat(checkpoints) | ||
result.checkpoints.sort(function (a, b) { | ||
return (+new Date(b.courier.code === tracker.COURIER.PANTOS.CODE && b.time ? b.estimateTime : b.time)) - (+new Date(a.courier.code === tracker.COURIER.PANTOS.CODE && a.time ? a.estimateTime : a.time)) | ||
parser.checkpoints(body, cb) | ||
}) | ||
} else { | ||
result.checkpoints = checkpoints | ||
}, | ||
function (checkpoints, cb) { | ||
if (result.checkpoints.length > 0) { | ||
result.checkpoints = result.checkpoints.concat(checkpoints) | ||
result.checkpoints.sort(function (a, b) { | ||
return (+new Date(b.courier.code === tracker.COURIER.PANTOS.CODE && b.time ? b.estimateTime : b.time)) - (+new Date(a.courier.code === tracker.COURIER.PANTOS.CODE && a.time ? a.estimateTime : a.time)) | ||
}) | ||
} else { | ||
result.checkpoints = checkpoints | ||
} | ||
result.status = tracker.normalizeStatus(result.checkpoints) | ||
cb(null, result) | ||
} | ||
result.status = tracker.normalizeStatus(result.checkpoints) | ||
cb(null, result) | ||
} | ||
], function (err, trace) { | ||
if (err) { | ||
if (err === 'There is not data found') { | ||
return cb(null, result) | ||
], function (err, trace) { | ||
if (err) { | ||
if (err === 'There is not data found') { | ||
return cb(null, result) | ||
} | ||
return cb(err) | ||
} | ||
return cb(err) | ||
} | ||
cb(null, trace) | ||
}) | ||
cb(null, trace) | ||
}) | ||
} | ||
} | ||
} |
@@ -41,3 +41,3 @@ 'use strict' | ||
result.number = $summary.eq(6).text().trim() | ||
result.number = $summary.eq(2).text().trim() | ||
@@ -80,20 +80,22 @@ if (!result.number) { | ||
module.exports = { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
async.waterfall([ | ||
function (cb) { | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data | ||
}, function (err, res, body) { | ||
cb(err, body) | ||
}) | ||
}, | ||
function (body, cb) { | ||
parser.trace(body, cb) | ||
} | ||
], cb) | ||
module.exports = function (opts) { | ||
return { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
async.waterfall([ | ||
function (cb) { | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data | ||
}, function (err, res, body) { | ||
cb(err, body) | ||
}) | ||
}, | ||
function (body, cb) { | ||
parser.trace(body, cb) | ||
} | ||
], cb) | ||
} | ||
} | ||
} |
@@ -63,17 +63,19 @@ 'use strict' | ||
module.exports = { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
request.get({ | ||
url: tracking.url | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
module.exports = function (opts) { | ||
return { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
request.get({ | ||
url: tracking.url | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
}) | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
}) | ||
} | ||
} | ||
} |
@@ -61,17 +61,19 @@ 'use strict' | ||
module.exports = { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
request.get({ | ||
url: tracking.url | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
module.exports = function (opts) { | ||
return { | ||
trackingInfo: trackingInfo, | ||
trace: function (number, cb) { | ||
var tracking = trackingInfo(number) | ||
request.get({ | ||
url: tracking.url | ||
}, function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
}) | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
}) | ||
} | ||
} | ||
} |
@@ -6,3 +6,3 @@ 'use strict' | ||
// cache | ||
var COURIERS = {} | ||
var COURIER_MODULES = {} | ||
@@ -45,2 +45,6 @@ var COURIER = { | ||
NAME: 'CJ Korea Express' | ||
}, | ||
DEPPON: { | ||
CODE: 'deppon', | ||
NAME: 'Deppon' | ||
} | ||
@@ -75,11 +79,15 @@ } | ||
var getCourier = function (slug) { | ||
var getCourier = function (slug, opts) { | ||
slug = slug || 'undefined' | ||
if (!COURIER[slug.toUpperCase()]) { | ||
var key = slug.toUpperCase() | ||
if (!COURIER[key]) { | ||
throw new Error('shipment does not support.') | ||
} | ||
if (!COURIERS[slug]) { | ||
COURIERS[slug] = require('./courier/' + slug) | ||
if (!COURIER_MODULES[slug]) { | ||
COURIER_MODULES[slug] = require('./courier/' + slug) | ||
} | ||
return COURIERS[slug] | ||
var courier = COURIER_MODULES[slug](opts) | ||
courier.CODE = COURIER[key].CODE | ||
courier.NAME = COURIER[key].NAME | ||
return courier | ||
} | ||
@@ -104,4 +112,4 @@ | ||
}, | ||
courier: function (slug) { | ||
return getCourier(slug) | ||
courier: function (slug, opts) { | ||
return getCourier(slug, opts) | ||
}, | ||
@@ -108,0 +116,0 @@ normalizeStatus: function (checkpoints) { |
{ | ||
"name": "delivery-tracker", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"author": { | ||
@@ -5,0 +5,0 @@ "name": "egg", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
44700
19
1151