Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ PATH
trackerific (0.7.5)
activesupport
builder
httparty (>= 0.12.0)
httparty (>= 0.11.0)
savon (~> 2.3.0)

GEM
Expand Down Expand Up @@ -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)
Expand Down
8 changes: 4 additions & 4 deletions README.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
48 changes: 42 additions & 6 deletions lib/trackerific/parsers/usps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion lib/trackerific/services/fedex.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion lib/trackerific/services/usps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion lib/trackerific/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module Trackerific
VERSION = "0.7.5"
VERSION = "0.7.6"
end
2 changes: 1 addition & 1 deletion spec/lib/trackerific/version_spec.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
require 'spec_helper'

describe Trackerific::VERSION do
it { should eq "0.7.5" }
it { should eq "0.7.6" }
end
2 changes: 1 addition & 1 deletion trackerific.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down