Index: openacs-4/packages/ecommerce/www/track.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ecommerce/www/track.tcl,v
diff -u -N -r1.10 -r1.11
--- openacs-4/packages/ecommerce/www/track.tcl 11 Aug 2008 13:01:10 -0000 1.10
+++ openacs-4/packages/ecommerce/www/track.tcl 6 Feb 2009 18:00:58 -0000 1.11
@@ -42,35 +42,52 @@
where shipment_id = :shipment_id"
set carrier_info ""
if { $carrier == "FedEx" } {
- set fedex_url "http://www.fedex.com/cgi-bin/tracking?tracknumbers=$tracking_number&action=track&language=english&cntry_code=us"
- with_catch errmsg {
- set page_from_fedex [ns_httpget $fedex_url]
- regexp {(
).*?()} $page_from_fedex \
- match detailed_info scan_activity
- # Remove links
+ set fedex_url "http://www.fedex.com/Tracking?tracknumbers=${tracking_number}&language=english&cntry_code=us"
+ set carrier_info "Unable to retrieve data from FedEx."
+ if { [catch {set get_id [ns_http queue -timeout 65 $fedex_url]} err ]} {
+ ns_log Error "ecommerce/www/track.tcl url=$fedex_url error: $err"
+ } else {
+ ns_log Notice "ecommerce/www/track.tcl ns_httping $fedex_url"
- regsub -all -nocase {*?a.*?>} $scan_activity "" scan_activity
- set carrier_info "$detailed_info $scan_activity"
- } {
- set carrier_info "Unable to retrieve data from FedEx."
+ if { [catch { ns_http wait -result page_from_fedex -status status $get_id } err2 ]} {
+ ns_log Error "ecommerce/www/track.tcl ns_http wait $err2"
+ }
+
+ if { ![info exists status] || $status ne "200" } {
+ # no page info returned, just return error
+ ns_log Warning "ecommerce/www/track.tcl Unable to retrieve FedEx data for ${tracking_number}. Error is $err"
+ } else {
+ # Received page, Remove links
+ set scan_activity [ecds_get_contents_from_tag {} {} $page_from_fedex]
+ set detailed_info [ecds_get_contents_from_tag {!-- shipment info -->} {} $page_from_fedex]
+ regsub -all -nocase {*?a.*?>} $scan_activity "" scan_activity
+ set carrier_info "$detailed_info $scan_activity"
+ }
}
+
} elseif { [string match "UPS*" $carrier] } {
- set ups_url "http://wwwapps.ups.com/etracking/tracking.cgi?submit=Track&InquiryNumber1=$tracking_number&TypeOfInquiryNumber=T&build_detail=yes"
+
+ set ups_url "http://wwwapps.ups.com/WebTracking/track?HTMLVersion=5.0&loc=en_US&Requester=UPSHome&trackNums=$tracking_number&track.x=track"
with_catch errmsg {
- set ups_page [ns_httpget $ups_url]
- if { ![regexp {(]*>Tracking Number:.* |
).*Tracking results provided by UPS} $ups_page match ups_info] } {
- set carrier_info "Unable to parse detail data from UPS."
- } else {
+ set ups_page [ns_httpget $ups_url]
+ if { [regexp {(.*)} $ups_page match ups_info] } {
+ # Remove spacer images
+ regsub -all -nocase {} $ups_info "" ups_info
+ set carrier_info ""
+ } elseif { [regexp {(.*)} $ups_page match ups_info] } {
+ # Remove spacer images
+ regsub -all -nocase {} $ups_info "" ups_info
+ set carrier_info ""
- # Remove spacer images
-
- regsub -all -nocase {} $ups_info "" ups_info
- set carrier_info "$ups_info"
- }
+ } else {
+ set carrier_info "Unable to parse detail data from UPS."
+ ns_log Error "ecommerce/www/track.tcl: unable to parse detail data from UPS for order_id $order_id"
+ }
} {
- set carrier_info "Unable to retrieve data from UPS."
+ set carrier_info "Unable to retrieve data from UPS."
}
+
}
set title "Your Shipment"