trackerific 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +2 -1
- data/Gemfile.lock +5 -1
- data/Rakefile +16 -0
- data/VERSION +1 -1
- data/doc/Trackerific.html +30 -20
- data/doc/Trackerific/Base.html +56 -89
- data/doc/Trackerific/Details.html +84 -33
- data/doc/Trackerific/Error.html +1 -1
- data/doc/Trackerific/Event.html +97 -59
- data/doc/Trackerific/FedEx.html +48 -89
- data/doc/Trackerific/UPS.html +46 -78
- data/doc/Trackerific/USPS.html +56 -145
- data/doc/_index.html +1 -1
- data/doc/file.README.html +1 -1
- data/doc/index.html +1 -1
- data/doc/method_list.html +13 -53
- data/doc/top-level-namespace.html +1 -1
- data/lib/fedex.rb +32 -17
- data/lib/trackerific.rb +41 -10
- data/lib/trackerific_details.rb +22 -3
- data/lib/trackerific_event.rb +27 -7
- data/lib/ups.rb +21 -12
- data/lib/usps.rb +32 -19
- data/spec/lib/trackerific_spec.rb +1 -7
- data/trackerific.gemspec +7 -7
- metadata +21 -7
- data/.yardoc/checksums +0 -6
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
data/lib/ups.rb
CHANGED
@@ -5,24 +5,23 @@ module Trackerific
|
|
5
5
|
|
6
6
|
# Provides package tracking support for UPS.
|
7
7
|
class UPS < Base
|
8
|
+
# setup HTTParty
|
8
9
|
include ::HTTParty
|
9
10
|
format :xml
|
11
|
+
# use the test site for Rails development, production for everything else
|
10
12
|
base_uri defined?(Rails) ? case Rails.env
|
11
13
|
when 'test','development' then 'https://wwwcie.ups.com/ups.app/xml'
|
12
14
|
when 'production' then 'https://www.ups.com/ups.app/xml'
|
13
15
|
end : 'https://www.ups.com/ups.app/xml'
|
14
16
|
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
# @return [Array] the required options for tracking a UPS package.
|
19
|
-
def required_options
|
20
|
-
[:key, :user_id, :password]
|
21
|
-
end
|
22
|
-
|
23
|
-
# Tracks a UPS package.
|
24
|
-
# A Trackerific::Error is raised when a package cannot be tracked.
|
17
|
+
# Tracks a UPS package
|
18
|
+
# @param [String] package_id the package identifier
|
25
19
|
# @return [Trackerific::Details] the tracking details
|
20
|
+
# @raise [Trackerific::Error] raised when the server returns an error (invalid credentials, tracking package, etc.)
|
21
|
+
# @example Track a package
|
22
|
+
# ups = Trackerific::UPS.new key: 'api key', user_id: 'user', password: 'secret'
|
23
|
+
# details = ups.track_package("1Z12345E0291980793")
|
24
|
+
# @api public
|
26
25
|
def track_package(package_id)
|
27
26
|
super
|
28
27
|
# connect to UPS via HTTParty
|
@@ -40,8 +39,16 @@ module Trackerific
|
|
40
39
|
|
41
40
|
protected
|
42
41
|
|
42
|
+
# The required options for tracking a UPS package
|
43
|
+
# @return [Array] the required options for tracking a UPS package.
|
44
|
+
# @api private
|
45
|
+
def required_options
|
46
|
+
[:key, :user_id, :password]
|
47
|
+
end
|
48
|
+
|
43
49
|
# Parses the response from UPS
|
44
50
|
# @return [Trackerific::Details]
|
51
|
+
# @api private
|
45
52
|
def parse_success_response(http_response)
|
46
53
|
# get the activity from the UPS response
|
47
54
|
activity = http_response['TrackResponse']['Shipment']['Package']['Activity']
|
@@ -70,14 +77,16 @@ module Trackerific
|
|
70
77
|
)
|
71
78
|
end
|
72
79
|
|
73
|
-
# Parses a UPS tracking response, and returns any errors
|
80
|
+
# Parses a UPS tracking response, and returns any errors
|
74
81
|
# @return [String] the UPS tracking error
|
82
|
+
# @api private
|
75
83
|
def parse_error_response(http_response)
|
76
84
|
http_response['TrackResponse']['Response']['Error']['ErrorDescription']
|
77
85
|
end
|
78
86
|
|
79
|
-
# Builds the XML request to send to UPS for tracking a package
|
87
|
+
# Builds the XML request to send to UPS for tracking a package
|
80
88
|
# @return [String] the XML request
|
89
|
+
# @api private
|
81
90
|
def build_xml_request
|
82
91
|
xml = ""
|
83
92
|
builder = ::Builder::XmlMarkup.new(:target => xml)
|
data/lib/usps.rb
CHANGED
@@ -6,34 +6,35 @@ module Trackerific
|
|
6
6
|
|
7
7
|
# Provides package tracking support for USPS.
|
8
8
|
class USPS < Base
|
9
|
+
# setup HTTParty
|
9
10
|
include HTTParty
|
10
11
|
format :xml
|
12
|
+
# use the test site for Rails development, production for everything else
|
11
13
|
base_uri defined?(Rails) ? case Rails.env
|
12
14
|
when 'test', 'development' then 'http://testing.shippingapis.com'
|
13
15
|
when 'production' then 'https://secure.shippingapis.com'
|
14
16
|
end : 'https://secure.shippingapis.com'
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
@options = options
|
19
|
-
end
|
20
|
-
|
21
|
-
# The required option for tracking a UPS package is :user_id
|
22
|
-
#
|
23
|
-
# @return [Array] the required options for tracking a UPS package.
|
24
|
-
def required_options
|
25
|
-
[:user_id]
|
26
|
-
end
|
27
|
-
|
28
|
-
# Tracks a USPS package.
|
29
|
-
# A Trackerific::Error is raised when a package cannot be tracked.
|
18
|
+
# Tracks a USPS package
|
19
|
+
# @param [String] package_id the package identifier
|
30
20
|
# @return [Trackerific::Details] the tracking details
|
21
|
+
# @raise [Trackerific::Error] raised when the server returns an error (invalid credentials, tracking package, etc.)
|
22
|
+
# @example Track a package
|
23
|
+
# usps = Trackerific::USPS.new user_id: 'user'
|
24
|
+
# details = ups.track_package("EJ958083578US")
|
25
|
+
# @api public
|
31
26
|
def track_package(package_id)
|
32
27
|
super
|
28
|
+
# connect to the USPS shipping API via HTTParty
|
33
29
|
response = self.class.get('/ShippingAPITest.dll', :query => {:API => 'TrackV2', :XML => build_xml_request}.to_query)
|
30
|
+
# throw any HTTP errors
|
34
31
|
response.error! unless response.code == 200
|
32
|
+
# raise a Trackerific::Error if there is an error in the response, or if the
|
33
|
+
# tracking response is malformed
|
35
34
|
raise Trackerific::Error, response['Error']['Description'] unless response['Error'].nil?
|
36
35
|
raise Trackerific::Error, "Tracking information not found in response from server." if response['TrackResponse'].nil?
|
36
|
+
# get the tracking information from the response, and convert into a
|
37
|
+
# Trackerific::Details
|
37
38
|
tracking_info = response['TrackResponse']['TrackInfo']
|
38
39
|
details = []
|
39
40
|
tracking_info['TrackDetail'].each do |d|
|
@@ -47,6 +48,7 @@ module Trackerific
|
|
47
48
|
desc = d[4..d.length].join(" ")
|
48
49
|
details << Trackerific::Event.new(date, desc, "")
|
49
50
|
end
|
51
|
+
# return the details
|
50
52
|
Trackerific::Details.new(
|
51
53
|
tracking_info['ID'],
|
52
54
|
tracking_info['TrackSummary'],
|
@@ -56,15 +58,26 @@ module Trackerific
|
|
56
58
|
|
57
59
|
protected
|
58
60
|
|
59
|
-
#
|
60
|
-
# @return [
|
61
|
+
# The required options for tracking a UPS package
|
62
|
+
# @return [Array] the required options for tracking a UPS package.
|
63
|
+
# @api private
|
64
|
+
def required_options
|
65
|
+
[:user_id]
|
66
|
+
end
|
67
|
+
|
68
|
+
# Builds an XML request to send to USPS
|
69
|
+
# @return [String] the xml request
|
70
|
+
# @api private
|
61
71
|
def build_xml_request
|
62
|
-
|
63
|
-
|
72
|
+
xml = ""
|
73
|
+
# set up the Builder
|
74
|
+
builder = ::Builder::XmlMarkup.new(:target => xml)
|
75
|
+
# build the request
|
64
76
|
builder.TrackRequest(:USERID => @options[:user_id]) do |t|
|
65
77
|
t.TrackID(:ID => @package_id)
|
66
78
|
end
|
67
|
-
return
|
79
|
+
# return the XML
|
80
|
+
xml
|
68
81
|
end
|
69
82
|
|
70
83
|
end
|
@@ -11,13 +11,7 @@ describe 'Trackerific::Base' do
|
|
11
11
|
before(:all) do
|
12
12
|
@base = Trackerific::Base.new
|
13
13
|
end
|
14
|
-
|
15
|
-
describe :required_options do
|
16
|
-
it "should return an Array" do
|
17
|
-
@base.required_options().should be_kind_of Array
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
14
|
+
|
21
15
|
describe "tracking_service" do
|
22
16
|
include Trackerific
|
23
17
|
context "when given a UPS tracking number" do
|
data/trackerific.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{trackerific}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Travis Haynes"]
|
@@ -18,9 +18,6 @@ Gem::Specification.new do |s|
|
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".rspec",
|
21
|
-
".yardoc/checksums",
|
22
|
-
".yardoc/objects/root.dat",
|
23
|
-
".yardoc/proxy_types",
|
24
21
|
"Gemfile",
|
25
22
|
"Gemfile.lock",
|
26
23
|
"LICENSE.txt",
|
@@ -100,7 +97,8 @@ Gem::Specification.new do |s|
|
|
100
97
|
s.add_development_dependency(%q<bundler>, [">= 1.0.13"])
|
101
98
|
s.add_development_dependency(%q<jeweler>, [">= 1.5.2"])
|
102
99
|
s.add_development_dependency(%q<rspec-rails>, [">= 2.6.1"])
|
103
|
-
s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
|
100
|
+
s.add_development_dependency(%q<ruby-debug19>, [">= 0.11.6"])
|
101
|
+
s.add_development_dependency(%q<yardstick>, [">= 0.4.0"])
|
104
102
|
else
|
105
103
|
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
106
104
|
s.add_dependency(%q<httparty>, [">= 0.7.7"])
|
@@ -108,7 +106,8 @@ Gem::Specification.new do |s|
|
|
108
106
|
s.add_dependency(%q<bundler>, [">= 1.0.13"])
|
109
107
|
s.add_dependency(%q<jeweler>, [">= 1.5.2"])
|
110
108
|
s.add_dependency(%q<rspec-rails>, [">= 2.6.1"])
|
111
|
-
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
109
|
+
s.add_dependency(%q<ruby-debug19>, [">= 0.11.6"])
|
110
|
+
s.add_dependency(%q<yardstick>, [">= 0.4.0"])
|
112
111
|
end
|
113
112
|
else
|
114
113
|
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
@@ -117,7 +116,8 @@ Gem::Specification.new do |s|
|
|
117
116
|
s.add_dependency(%q<bundler>, [">= 1.0.13"])
|
118
117
|
s.add_dependency(%q<jeweler>, [">= 1.5.2"])
|
119
118
|
s.add_dependency(%q<rspec-rails>, [">= 2.6.1"])
|
120
|
-
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
119
|
+
s.add_dependency(%q<ruby-debug19>, [">= 0.11.6"])
|
120
|
+
s.add_dependency(%q<yardstick>, [">= 0.4.0"])
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 2
|
9
|
+
version: 0.3.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Travis Haynes
|
@@ -116,10 +116,27 @@ dependencies:
|
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
segments:
|
118
118
|
- 0
|
119
|
-
|
119
|
+
- 11
|
120
|
+
- 6
|
121
|
+
version: 0.11.6
|
120
122
|
type: :development
|
121
123
|
prerelease: false
|
122
124
|
version_requirements: *id007
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: yardstick
|
127
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
segments:
|
133
|
+
- 0
|
134
|
+
- 4
|
135
|
+
- 0
|
136
|
+
version: 0.4.0
|
137
|
+
type: :development
|
138
|
+
prerelease: false
|
139
|
+
version_requirements: *id008
|
123
140
|
description: Trackerific provides USPS, FedEx and UPS package tracking to Rails.
|
124
141
|
email: travis.j.haynes@gmail.com
|
125
142
|
executables: []
|
@@ -131,9 +148,6 @@ extra_rdoc_files:
|
|
131
148
|
- README.rdoc
|
132
149
|
files:
|
133
150
|
- .rspec
|
134
|
-
- .yardoc/checksums
|
135
|
-
- .yardoc/objects/root.dat
|
136
|
-
- .yardoc/proxy_types
|
137
151
|
- Gemfile
|
138
152
|
- Gemfile.lock
|
139
153
|
- LICENSE.txt
|
@@ -198,7 +212,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
198
212
|
requirements:
|
199
213
|
- - ">="
|
200
214
|
- !ruby/object:Gem::Version
|
201
|
-
hash:
|
215
|
+
hash: 154150799
|
202
216
|
segments:
|
203
217
|
- 0
|
204
218
|
version: "0"
|
data/.yardoc/checksums
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
lib/ups.rb 2b98972c48bd4032d5a6cd2017549ce394e8ea0d
|
2
|
-
lib/usps.rb b6e83100cd5225341ce5a61f0ff843440309e063
|
3
|
-
lib/fedex.rb ba42d502349530fe2518303c23d2b8babecd5f2d
|
4
|
-
lib/trackerific.rb 78b145e898c315d3e80aaef686877cb674621fed
|
5
|
-
lib/trackerific_event.rb 21e48404ba7b8b90114ce0d74d38248a637a0452
|
6
|
-
lib/trackerific_details.rb d3c5cc1844259f2889b4d82920b12ad57fe4d412
|
data/.yardoc/objects/root.dat
DELETED
Binary file
|
data/.yardoc/proxy_types
DELETED
Binary file
|