delivery-tracker
Advanced tools
Comparing version 2.4.3 to 2.4.4
@@ -0,1 +1,4 @@ | ||
# 2.4.4 | ||
* fixed an issue in CJKOREAEXPRESS is not working. | ||
# 2.4.3 | ||
@@ -2,0 +5,0 @@ * fixed an issue of UPS that always marked as InTransit |
'use strict' | ||
var request = require('request') | ||
var cheerio = require('cheerio') | ||
var moment = require('moment') | ||
@@ -10,9 +9,18 @@ | ||
var trackingInfo = function (number) { | ||
number = (number + '').replace(/-/gm, '') | ||
return { | ||
method: 'POST', | ||
url: 'https://www.doortodoor.co.kr/parcel/doortodoor.do', | ||
data: { | ||
'fsp_action': 'PARC_ACT_002', | ||
'fsp_cmd': 'retrieveInvNoACT2', | ||
'invc_no': (number + '').replace(/-/gm, '') | ||
cookie: { | ||
url: 'https://www.cjlogistics.com/ko/tool/parcel/tracking', | ||
method: 'GET' | ||
}, | ||
detail: function (csrf) { | ||
return { | ||
method: 'POST', | ||
url: 'https://www.cjlogistics.com/ko/tool/parcel/tracking-detail', | ||
json: true, | ||
form: { | ||
'_csrf': csrf, | ||
'paramInvcNo': number | ||
} | ||
} | ||
} | ||
@@ -23,4 +31,7 @@ } | ||
var parser = { | ||
csfr: function (body) { | ||
var matches = body.match(/name="_csrf"\s+value="([\d\w-]+)"/i) | ||
return matches ? matches[1] : '' | ||
}, | ||
trace: function (body) { | ||
var $ = cheerio.load(body) | ||
var courier = { | ||
@@ -32,3 +43,2 @@ code: tracker.COURIER.CJKOREAEXPRESS.CODE, | ||
courier: courier, | ||
number: $('#inv_no').val(), | ||
status: tracker.STATUS.PENDING, | ||
@@ -39,23 +49,24 @@ checkpoints: [] | ||
$('table.ptb10.mb15').find('tr').each(function (idx) { | ||
if (idx > 0) { | ||
var cols = $(this).find('td') | ||
var status = cols.eq(0).text().trim().replace(/\s{2,}/, ' ') | ||
var time = cols.eq(1).text().trim().replace(/\s{2,}/, ' ') | ||
var resultMap = body.parcelDetailResultMap | ||
result.number = resultMap.paramInvcNo | ||
var checkpoint = { | ||
courier: courier, | ||
location: cols.eq(1).text().trim(), | ||
message: status, | ||
status: tracker.STATUS.IN_TRANSIT, | ||
time: moment(time, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DDTHH:mm:ss+0900') | ||
} | ||
for (var i = 0; i < resultMap.resultList.length; i++) { | ||
var item = resultMap.resultList[i] | ||
var checkpoint = { | ||
courier: courier, | ||
location: item.regBranNm, | ||
message: [item.crgNm], | ||
status: tracker.STATUS.IN_TRANSIT, | ||
time: moment(item.dTime + '+0900').utc().format('YYYY-MM-DDTHH:mmZ') | ||
} | ||
checkpoint.message.indexOf('집화처리') !== -1 && (checkpoint.status = tracker.STATUS.INFO_RECEIVED) | ||
checkpoint.message.indexOf('배달완료') !== -1 && (checkpoint.status = tracker.STATUS.DELIVERED) | ||
checkpoints.push(checkpoint) | ||
if (['집화처리', '상품인수'].indexOf(item.scanNm) !== -1) { | ||
checkpoint.status = tracker.STATUS.INFO_RECEIVED | ||
} else if (item.scanNm === '배달완료') { | ||
checkpoint.status = tracker.STATUS.DELIVERED | ||
} | ||
}) | ||
checkpoints.push(checkpoint) | ||
} | ||
result.checkpoints = checkpoints.reverse() | ||
@@ -73,8 +84,5 @@ result.status = tracker.normalizeStatus(result.checkpoints) | ||
var tracking = trackingInfo(number) | ||
var req = request.defaults({ jar: true }) | ||
request.post({ | ||
url: tracking.url, | ||
form: tracking.data, | ||
strictSSL: false | ||
}, function (err, res, body) { | ||
req(tracking.cookie, function (err, res, body) { | ||
if (err) { | ||
@@ -84,8 +92,14 @@ return cb(err) | ||
try { | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
} catch (e) { | ||
cb(e.message) | ||
} | ||
var csfrValue = parser.csfr(body) | ||
req(tracking.detail(csfrValue), function (err, res, body) { | ||
if (err) { | ||
return cb(err) | ||
} | ||
try { | ||
var result = parser.trace(body) | ||
cb(result ? null : tracker.error(tracker.ERROR.INVALID_NUMBER), result) | ||
} catch (e) { | ||
cb(e.message) | ||
} | ||
}) | ||
}) | ||
@@ -92,0 +106,0 @@ } |
@@ -18,5 +18,5 @@ 'use strict' | ||
}, | ||
checkpoints: function (parma) { | ||
checkpoints: function (hash) { | ||
return { | ||
url: 'https://www.lbcexpress.com/track/' + parma.hash, | ||
url: 'https://www.lbcexpress.com/track/' + hash, | ||
method: 'GET' | ||
@@ -75,3 +75,3 @@ } | ||
request(trackingInfo(number).hash, function (err, req, body) { | ||
cb(err, err ? null : JSON.parse(body)) | ||
cb(err, err ? null : JSON.parse(body).hash) | ||
}) | ||
@@ -78,0 +78,0 @@ } |
{ | ||
"name": "delivery-tracker", | ||
"version": "2.4.3", | ||
"version": "2.4.4", | ||
"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
77954
2224