From 00ac6533ba502d12cb005f9210f3f248ea3504c6 Mon Sep 17 00:00:00 2001 From: Justin Mui Date: Tue, 22 Oct 2013 11:00:00 -0700 Subject: [PATCH 1/5] - make the plugin backward compatible with older version of httparty --- Gemfile.lock | 4 ++-- trackerific.gemspec | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c80c4b3..157b350 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,7 +4,7 @@ PATH trackerific (0.7.5) activesupport builder - httparty (>= 0.12.0) + httparty (>= 0.11.0) savon (~> 2.3.0) GEM @@ -38,7 +38,7 @@ GEM rack rubyntlm (~> 0.3.2) i18n (0.6.5) - json (1.8.0) + json (1.8.1) mime-types (1.25) minitest (4.7.5) multi_json (1.8.2) diff --git a/trackerific.gemspec b/trackerific.gemspec index 12487ff..c42842a 100644 --- a/trackerific.gemspec +++ b/trackerific.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] - spec.add_dependency 'httparty', '>= 0.12.0' + spec.add_dependency 'httparty', '>= 0.11.0' spec.add_dependency 'savon', '~> 2.3.0' spec.add_dependency 'activesupport' spec.add_dependency 'builder' From afabef3dd8a6c044cc13a3382850603a8026478a Mon Sep 17 00:00:00 2001 From: Justin Mui Date: Tue, 22 Oct 2013 11:00:40 -0700 Subject: [PATCH 2/5] - update documentation --- README.rdoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.rdoc b/README.rdoc index 2269cea..0154333 100644 --- a/README.rdoc +++ b/README.rdoc @@ -48,11 +48,11 @@ Once you configured the services, tracking a package is as easy as === Finding a Tracking Service Provider If you do not know the tracking service provider of a package id you can use -Trackerific::Services.find_by_tracking_id: +Trackerific::Services.find_by_package_id: - Trackerific::Services.find_by_tracking_id("123456789012") - Trackerific::Services.find_by_tracking_id("1Z12345E0291980793") - Trackerific::Services.find_by_tracking_id("EJ958083578US") + Trackerific::Services.find_by_package_id("123456789012") + Trackerific::Services.find_by_package_id("1Z12345E0291980793") + Trackerific::Services.find_by_package_id("EJ958083578US") Each of the above examples will return an Array of Trackerific::Service::Base subclasses that are capable of tracking the given From 79368d2af87acbc4fac58dc9c1fc3223d3b8ad53 Mon Sep 17 00:00:00 2001 From: Justin Mui Date: Fri, 25 Oct 2013 14:10:18 -0700 Subject: [PATCH 3/5] - add matcher for fedex --- lib/trackerific/services/fedex.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/trackerific/services/fedex.rb b/lib/trackerific/services/fedex.rb index dd79233..ba2e070 100644 --- a/lib/trackerific/services/fedex.rb +++ b/lib/trackerific/services/fedex.rb @@ -6,6 +6,6 @@ class Trackerific::Services::FedEx < Trackerific::Services::Base config.builder = Trackerific::Builders::FedEx config.parser = Trackerific::Parsers::FedEx config.wsdl = 'fedex/TrackService_v8' - config.package_id_matchers = [ /^[0-9]{15}$/ ] + config.package_id_matchers = [ /^[0-9]{12}$/, /^[0-9]{15}$/ ] end end From 80269d2dcde4c84315333f6139f580ef8b15ba6c Mon Sep 17 00:00:00 2001 From: Justin Mui Date: Thu, 7 Nov 2013 17:16:03 -0800 Subject: [PATCH 4/5] - add staging to usps production server --- lib/trackerific/services/usps.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/trackerific/services/usps.rb b/lib/trackerific/services/usps.rb index 3df7fd9..e6d5bc7 100644 --- a/lib/trackerific/services/usps.rb +++ b/lib/trackerific/services/usps.rb @@ -7,7 +7,7 @@ class Trackerific::Services::USPS < Trackerific::Services::Base config.package_id_matchers = [ /^E\D{1}\d{9}\D{2}$|^9\d{15,21}$/ ] case Trackerific.env - when 'production' + when 'production', 'staging' config.endpoint = '/ShippingAPI.dll' config.base_uri = 'http://production.shippingapis.com' else From 2fa72c36c2217fb50d43f0bb5ce1ee2f76a904c3 Mon Sep 17 00:00:00 2001 From: Zack Shapiro Date: Tue, 26 Nov 2013 12:26:54 -0800 Subject: [PATCH 5/5] updated usps parser --- lib/trackerific/parsers/usps.rb | 48 ++++++++++++++++++++++++---- lib/trackerific/version.rb | 2 +- spec/lib/trackerific/version_spec.rb | 2 +- 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/lib/trackerific/parsers/usps.rb b/lib/trackerific/parsers/usps.rb index 146d877..c3ce657 100644 --- a/lib/trackerific/parsers/usps.rb +++ b/lib/trackerific/parsers/usps.rb @@ -29,19 +29,55 @@ def tracking_info @response['TrackResponse']['TrackInfo'] end - def date(event) + def date(event) + months = { "January" => 0, "Feburary" => 1, "March" => 2, "April" => 3, "May" => 4, "June" => 5, "July" => 6, "August" => 7, "September" => 8, "October" => 9, "November" => 10, "December" => 11 } + d = event.split(" ") - DateTime.parse(d[0..3].join(" ")) + event_hash = Hash[d.map.with_index.to_a] + + month_name = d.find { |element| months[element] } + start_value = event_hash[month_name] + + if d[start_value + 4].present? # set end of range based on am/pm presence + if d[start_value + 4].include?("am") || d[start_value + 4].include?("pm") + + end_value = start_value + 4 + else + end_value = start_value + 2 + end + else + end_value = start_value + 2 + end + + g = DateTime.parse(d[start_value..end_value].join(" ")) end def description(event) - d = event.split(" ") - d[4..d.length-4].join(" ") + # description is always the first thing, separated by a comma from the date + d = event.split(",").first end def location(event) d = event.gsub(".", "").split(" ") - city, state, zip = d.last(3) - "#{city}, #{state} #{zip}" + + if d.last.include?("201") #detecting year 2013/2014/etc., no location present + city, state, zip = ["", "", ""] + else + event_hash = Hash[d.map.with_index.to_a] + + starting_index = event_hash["2013,"] if event_hash["2013,"].present? + starting_index = event_hash["2014,"] if event_hash["2014,"].present? + starting_index = event_hash["am,"] if event_hash["am,"].present? + starting_index = event_hash["pm,"] if event_hash["pm,"].present? + + package_location_array = d[starting_index + 1..d.length] + + zip = package_location_array.last + state = package_location_array[package_location_array.length - 2] + city = package_location_array - [state, zip] + city = city.join(" ") + end + + "#{city} #{state} #{zip}" end end diff --git a/lib/trackerific/version.rb b/lib/trackerific/version.rb index 5cbe7bf..bbf1337 100644 --- a/lib/trackerific/version.rb +++ b/lib/trackerific/version.rb @@ -1,3 +1,3 @@ module Trackerific - VERSION = "0.7.5" + VERSION = "0.7.6" end diff --git a/spec/lib/trackerific/version_spec.rb b/spec/lib/trackerific/version_spec.rb index 4dfcbcc..f254225 100644 --- a/spec/lib/trackerific/version_spec.rb +++ b/spec/lib/trackerific/version_spec.rb @@ -1,5 +1,5 @@ require 'spec_helper' describe Trackerific::VERSION do - it { should eq "0.7.5" } + it { should eq "0.7.6" } end