theseus/app/services/tracking.rb
2025-05-31 23:25:41 -04:00

38 lines
1.3 KiB
Ruby

class Tracking
class << self
TRACKING_URL_FORMATS = {
asendia: "https://a1.asendiausa.com/tracking/?trackingnumber=%s",
usps: "https://tools.usps.com/go/TrackConfirmAction_input?strOrigTrackNum=%s",
ups: "https://www.ups.com/track?loc=en_US&tracknum=%s&requester=ST/trackdetails",
fedex: "https://www.fedex.com/fedextrack/?trknbr=%s",
generic: "https://parcelsapp.com/en/tracking/%s"
}.freeze
def tracking_url_for(format, trknum)
return nil if !trknum || trknum.empty? # no tracking link for FCM(I) :-P
TRACKING_URL_FORMATS[format] % trknum
end
def get_format_by_zenv_info(carrier:, service:)
case carrier # figure out provider
when "Asendia"
:asendia
when "UPS", "UPS by ShipStation" # whyyyy
:ups
when /^Stamps\.com( \(Zenventory USPS\))?$/
case service
when /GlobalPost .* Intl/
:generic # these have better tracking than parcels at epgshipping.com but i can't figure out how to generate a URL to their portal
else
:usps # i think USPS is the only other carrier zenv uses SDC for?
end
when "FedEx"
:fedex
else
Rails.logger.warn("missing tracking format for carrier #{carrier}")
:generic # not a huge parcels fan but it'll catch everything else
end
end
end
end