fedex 2.2.2 → 3.0.0
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/Readme.md +7 -1
- data/fedex.gemspec +1 -1
- data/lib/fedex/request/base.rb +2 -2
- data/lib/fedex/request/tracking_information.rb +7 -8
- data/lib/fedex/tracking_information.rb +9 -7
- data/lib/fedex/tracking_information/event.rb +12 -10
- data/lib/fedex/version.rb +1 -1
- data/spec/lib/fedex/track_spec.rb +19 -13
- metadata +13 -13
data/Readme.md
CHANGED
|
@@ -188,7 +188,12 @@ Documentation for setting up Paperclip with Amazon S3 can be found in the Paperc
|
|
|
188
188
|
To track a shipment:
|
|
189
189
|
|
|
190
190
|
```ruby
|
|
191
|
-
|
|
191
|
+
results = fedex.track(:tracking_number => "1234567890123")
|
|
192
|
+
# => [#<Fedex::TrackingInformation>]
|
|
193
|
+
|
|
194
|
+
# Pull the first result from the returned array
|
|
195
|
+
#
|
|
196
|
+
tracking_info = results.first
|
|
192
197
|
|
|
193
198
|
tracking_info.tracking_number
|
|
194
199
|
# => "1234567890123"
|
|
@@ -242,6 +247,7 @@ Fedex::Shipment::DROP_OFF_TYPES
|
|
|
242
247
|
- [geermc4](https://github.com/geermc4) (German Garcia)
|
|
243
248
|
- [janders223] (https://github.com/janders223) (Jim Anders)
|
|
244
249
|
- [jlambert121] (https://github.com/jlambert121) (Justin Lambert)
|
|
250
|
+
- [sborsje] (https://github.com/sborsje) (Stefan Borsje)
|
|
245
251
|
|
|
246
252
|
# Copyright/License:
|
|
247
253
|
Copyright 2011 [Jazmin Schroeder](http://jazminschroeder.com)
|
data/fedex.gemspec
CHANGED
data/lib/fedex/request/base.rb
CHANGED
|
@@ -25,7 +25,6 @@ module Fedex
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def process_request
|
|
28
|
-
puts build_xml
|
|
29
28
|
api_response = self.class.post(api_url, :body => build_xml)
|
|
30
29
|
puts api_response if @debug == true
|
|
31
30
|
response = parse_response(api_response)
|
|
@@ -33,7 +32,9 @@ module Fedex
|
|
|
33
32
|
if success?(response)
|
|
34
33
|
options = response[:track_reply][:track_details]
|
|
35
34
|
|
|
36
|
-
|
|
35
|
+
[options].flatten.map do |details|
|
|
36
|
+
Fedex::TrackingInformation.new(details)
|
|
37
|
+
end
|
|
37
38
|
else
|
|
38
39
|
error_message = if response[:track_reply]
|
|
39
40
|
response[:track_reply][:notifications][:message]
|
|
@@ -54,18 +55,16 @@ module Fedex
|
|
|
54
55
|
add_client_detail(xml)
|
|
55
56
|
add_version(xml)
|
|
56
57
|
add_package_identifier(xml)
|
|
57
|
-
xml.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
xml.TrackingNumberUniqueIdentifier @uuid if @uuid
|
|
61
|
-
xml.PagingToken @paging_token if @paging_token
|
|
58
|
+
xml.TrackingNumberUniqueIdentifier @uuid if @uuid
|
|
59
|
+
xml.IncludeDetailedScans @include_detailed_scans
|
|
60
|
+
xml.PagingToken @paging_token if @paging_token
|
|
62
61
|
}
|
|
63
62
|
end
|
|
64
63
|
builder.doc.root.to_xml
|
|
65
64
|
end
|
|
66
65
|
|
|
67
66
|
def service
|
|
68
|
-
{ :id => 'trck', :version =>
|
|
67
|
+
{ :id => 'trck', :version => 6 }
|
|
69
68
|
end
|
|
70
69
|
|
|
71
70
|
def add_package_identifier(xml)
|
|
@@ -29,20 +29,22 @@ module Fedex
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
attr_reader :tracking_number, :signature_name, :service_type, :status,
|
|
32
|
-
:delivery_at, :events
|
|
32
|
+
:delivery_at, :events, :unique_tracking_number
|
|
33
33
|
|
|
34
34
|
def initialize(details = {})
|
|
35
35
|
@details = details
|
|
36
36
|
|
|
37
|
-
@tracking_number
|
|
38
|
-
@
|
|
39
|
-
@
|
|
40
|
-
@
|
|
37
|
+
@tracking_number = details[:tracking_number]
|
|
38
|
+
@unique_tracking_number = details[:tracking_number_unique_identifier]
|
|
39
|
+
@signature_name = details[:delivery_signature_name]
|
|
40
|
+
@service_type = details[:service_type]
|
|
41
|
+
@status = details[:status_description]
|
|
42
|
+
|
|
41
43
|
if details.has_key?(:actual_delivery_timestamp)
|
|
42
|
-
@delivery_at = Time.parse(details[:actual_delivery_timestamp])
|
|
44
|
+
@delivery_at = Time.parse(details[:actual_delivery_timestamp])
|
|
43
45
|
end
|
|
44
46
|
|
|
45
|
-
@events = details[:events].map do |event_details|
|
|
47
|
+
@events = [details[:events]].flatten.compact.map do |event_details|
|
|
46
48
|
Event.new(event_details)
|
|
47
49
|
end
|
|
48
50
|
end
|
|
@@ -2,18 +2,20 @@ module Fedex
|
|
|
2
2
|
class TrackingInformation
|
|
3
3
|
class Event
|
|
4
4
|
attr_reader :description, :type, :occured_at, :city, :state, :postal_code,
|
|
5
|
-
:country, :residential
|
|
5
|
+
:country, :residential, :exception_code, :exception_description
|
|
6
6
|
|
|
7
7
|
def initialize(details = {})
|
|
8
|
-
@description
|
|
9
|
-
@type
|
|
10
|
-
@occured_at
|
|
11
|
-
@city
|
|
12
|
-
@state
|
|
13
|
-
@postal_code
|
|
14
|
-
@country
|
|
15
|
-
@residential
|
|
8
|
+
@description = details[:event_description]
|
|
9
|
+
@type = details[:event_type]
|
|
10
|
+
@occured_at = Time.parse(details[:timestamp])
|
|
11
|
+
@city = details[:address][:city]
|
|
12
|
+
@state = details[:address][:state_or_province_code]
|
|
13
|
+
@postal_code = details[:address][:postal_code]
|
|
14
|
+
@country = details[:address][:country_code]
|
|
15
|
+
@residential = details[:address][:residential] == "true"
|
|
16
|
+
@exception_code = details[:status_exception_code]
|
|
17
|
+
@exception_description = details[:status_exception_description]
|
|
16
18
|
end
|
|
17
19
|
end
|
|
18
20
|
end
|
|
19
|
-
end
|
|
21
|
+
end
|
data/lib/fedex/version.rb
CHANGED
|
@@ -6,16 +6,25 @@ module Fedex
|
|
|
6
6
|
|
|
7
7
|
context "shipments with tracking number", :vcr, :focus do
|
|
8
8
|
let(:options) do
|
|
9
|
-
{ :package_id => "
|
|
9
|
+
{ :package_id => "123456789012",
|
|
10
10
|
:package_type => "TRACKING_NUMBER_OR_DOORTAG",
|
|
11
11
|
:include_detailed_scans => true
|
|
12
12
|
}
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
let(:uuid) { "12012~123456789012~FDEG" }
|
|
16
|
+
|
|
17
|
+
it "returns an array of tracking information results" do
|
|
18
|
+
results = fedex.track(options)
|
|
19
|
+
results.should_not be_empty
|
|
20
|
+
end
|
|
21
|
+
|
|
15
22
|
it "returns events with tracking information" do
|
|
16
|
-
|
|
23
|
+
options[:uuid] = uuid
|
|
24
|
+
|
|
25
|
+
tracking_info = fedex.track(options).first
|
|
17
26
|
|
|
18
|
-
tracking_info.events.
|
|
27
|
+
tracking_info.events.should_not be_empty
|
|
19
28
|
end
|
|
20
29
|
|
|
21
30
|
it "fails if using an invalid package type" do
|
|
@@ -27,22 +36,19 @@ module Fedex
|
|
|
27
36
|
end
|
|
28
37
|
|
|
29
38
|
it "allows short hand tracking number queries" do
|
|
30
|
-
shorthand_options = options
|
|
39
|
+
shorthand_options = { :tracking_number => options[:package_id] }
|
|
31
40
|
|
|
32
|
-
|
|
33
|
-
tracking_number = shorthand_options.delete(:package_id)
|
|
41
|
+
tracking_info = fedex.track(shorthand_options).first
|
|
34
42
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
tracking_info = fedex.track(shorthand_options)
|
|
38
|
-
|
|
39
|
-
tracking_info.tracking_number.should == tracking_number
|
|
43
|
+
tracking_info.tracking_number.should == options[:package_id]
|
|
40
44
|
end
|
|
41
45
|
|
|
42
46
|
it "reports the status of the package" do
|
|
43
|
-
|
|
47
|
+
options[:uuid] = uuid
|
|
48
|
+
|
|
49
|
+
tracking_info = fedex.track(options).first
|
|
44
50
|
|
|
45
|
-
tracking_info.status.should == "
|
|
51
|
+
tracking_info.status.should == "In transit"
|
|
46
52
|
end
|
|
47
53
|
|
|
48
54
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fedex
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,22 +9,22 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2013-02-02 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: httparty
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70168051584480 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: 0.
|
|
21
|
+
version: 0.10.0
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70168051584480
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: nokogiri
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70168051583980 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ~>
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: 1.5.0
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *70168051583980
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: rspec
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70168051583460 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ~>
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: 2.9.0
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70168051583460
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: vcr
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &70168051582920 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ~>
|
|
@@ -54,10 +54,10 @@ dependencies:
|
|
|
54
54
|
version: 2.0.0
|
|
55
55
|
type: :development
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70168051582920
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: fakeweb
|
|
60
|
-
requirement: &
|
|
60
|
+
requirement: &70168051582460 !ruby/object:Gem::Requirement
|
|
61
61
|
none: false
|
|
62
62
|
requirements:
|
|
63
63
|
- - ! '>='
|
|
@@ -65,7 +65,7 @@ dependencies:
|
|
|
65
65
|
version: '0'
|
|
66
66
|
type: :development
|
|
67
67
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *70168051582460
|
|
69
69
|
description: Provides an interface to Fedex Web Services(version 10) - shipping rates,
|
|
70
70
|
generate labels and address validation
|
|
71
71
|
email:
|