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/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
- # The required options for tracking a UPS package are :key, :user_id, and
16
- # :password.
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
- def initialize(options = {})
17
- super
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
- # Parses the response from UPS
60
- # @return [Trackerific::Details]
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
- tracking_request = ""
63
- builder = ::Builder::XmlMarkup.new(:target => tracking_request)
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 tracking_request
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.1"
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
- - 1
9
- version: 0.3.1
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
- version: "0"
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: -53613295
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
Binary file
data/.yardoc/proxy_types DELETED
Binary file