From 5290507f3b267546fbdca1ccca9c3eb6f3f55823 Mon Sep 17 00:00:00 2001 From: Patrick Griffin Date: Mon, 24 Jun 2019 11:59:49 -0400 Subject: [PATCH] batch tracker url --- lib/tracking_number/base.rb | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/lib/tracking_number/base.rb b/lib/tracking_number/base.rb index dd22ea2..e22b162 100644 --- a/lib/tracking_number/base.rb +++ b/lib/tracking_number/base.rb @@ -35,6 +35,24 @@ def self.scan(body) end end + def self.tracking_url(*trackers) + if not trackers.all? { |t| t.class == self } + raise ArgumentError, "all tracking numbers must be of same class" + end + url = nil + courier = trackers.first.matching_additional["Courier"] + if courier + url = courier[:tracking_url] + else + if self.const_defined?(:TRACKING_URL) + url = self.const_get(:TRACKING_URL) + end + end + if url + url.sub('%s', trackers.map(&:tracking_number).join(',')) + end + end + def serial_number return match_group("SerialNumber") unless self.class.const_get("VALIDATION") @@ -170,18 +188,7 @@ def shipper_id end def tracking_url - url = nil - if matching_additional["Courier"] - url = matching_additional["Courier"][:tracking_url] - else - if self.class.const_defined?(:TRACKING_URL) - url = self.class.const_get(:TRACKING_URL) - end - end - - if url - url.sub('%s', self.tracking_number) - end + self.class.tracking_url self end def matching_additional