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 {} $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 {} $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 "$ups_info
" + } elseif { [regexp {(.*)} $ups_page match ups_info] } { + # Remove spacer images + regsub -all -nocase {} $ups_info "" ups_info + set carrier_info "$ups_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"