Skip to content

Instantly share code, notes, and snippets.

@junk4hos
Created June 24, 2009 03:43
Show Gist options
  • Save junk4hos/134987 to your computer and use it in GitHub Desktop.
Save junk4hos/134987 to your computer and use it in GitHub Desktop.
/* Updated for Ubiquity parser 2 */
CmdUtils.CreateCommand({
names: ["track-package", "track"],
author: {name: "Scott Hosfeld", email: "junk4hos+ubiquity@gmail.com"},
license: "GPL",
description: "Tracks packages via Fedex, UPS, USPS, DHL",
help: "Pass the tracking number along",
arguments: [{role:"object", nountype: noun_arb_text, label:"Tracking Number"}],
_getCompany: function(trackNum){
//returns the company that the tracking number belongs to
var targetCompany='NONE';
//tracking number formats
/*USPS
EB 123 456 789 US - Express mail
9101 1288 8230 0001 1234 56 - Delivery Confirmation
7000 0000 0000 0000 0000 - Certified
0300 0000 0000 0000 0000 - Delivery confirmation Certified
2300 0000 0000 0000 0000 - Signiture confirmation */
var usps_num = /\b\w{2}(\d{9})US|\b\d{22}\b|7(\d{19})|03(\d{18})|23(\d{18})|82(\d{8}$)/;
//Fedex
//999 999 999 999 999, Door tag DT123456789123
var fedex_num = /\b\d{15}\b|DT(\d{12})/;
/*DHL
SEA1234567 U.S. Domestic Shipments* – 3 character origin code and HAWB number, up to 10 digits.
SEA123456 International Ocean Shipments - 9 character HBL number
1234567 International Air Freight Shipments - 7 digit HAWB number */
var dhl_num = /(\b[A-Z]{3})(\d{6,7})|\b\d{7}\b/;
/*UPS
1Z 999 999 99 9999 999 9
9999 9999 9999
T999 9999 999
999 999 999 */
var ups_num = /1Z(\w{16})|\b\d{12}\b|T(\d{10})|\b\d{9}\b/;
trackNum = trackNum.replace(/\s/g,'');
targetCompany='NONE';
if (usps_num.test(trackNum)){targetCompany='USPS';}
if (fedex_num.test(trackNum)){targetCompany='Fedex';}
if (dhl_num.test(trackNum)){targetCompany='DHL';}
if (ups_num.test(trackNum)){targetCompany='UPS';}
return targetCompany;
},
preview: function(pblock, args){
var msg = _("Track package via ");
var targetCompany = "NONE";
targetCompany = this._getCompany(args.object.text);
if (targetCompany=='NONE'){
msg = _("Cannot determine tracking format");
pblock.innerHTML = msg;
}else{
pblock.innerHTML = msg + targetCompany;
}
},
execute: function(args) {
var targetUrl='';
var targetCompany='NONE';
var msg='';
var trackNum=args.object.text;
targetCompany=this._getCompany(trackNum);
if (targetCompany=='NONE'){
displayMessage(_("Could not determine the format of the tracking number"));
}else{
//url's for tracking
const ups_url='http://wwwapps.ups.com/WebTracking/processRequest?HTMLVersion=5.0&Requester=NES&AgreeToTermsAndConditions=yes&loc=en_US&tracknum=';
const dhl_url='http://track.dhl-usa.com/atrknav.asp?ShipmentNumber=';
const usps_url='http://trkcnfrm1.smi.usps.com/PTSInternetWeb/InterLabelInquiry.do?origTrackNum=';
const fedex_url='http://www.fedex.com/Tracking?tracknumbers=';
switch(targetCompany){
case 'UPS':
targetUrl=ups_url;
break;
case 'DHL':
targetUrl=dhl_url;
break;
case 'USPS':
targetUrl=usps_url;
break;
case 'Fedex':
targetUrl=fedex_url;
break;
}
targetUrl+=trackNum;
msg = _("Tracking your package " + trackNum + " via " + targetCompany);
displayMessage(msg);
Utils.openUrlInBrowser(targetUrl);
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment