trackerific 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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