fedex 0.0.1 → 0.1.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 CHANGED
@@ -33,9 +33,9 @@ Define the recipient:
33
33
  :company => "Company",
34
34
  :phone_number => "555-555-5555",
35
35
  :address => "Main Street",
36
- :city => "City",
37
- :state => "ST",
38
- :postal_code => "55555",
36
+ :city => "Franklin Park",
37
+ :state => "IL",
38
+ :postal_code => "60131",
39
39
  :country_code => "US",
40
40
  :residential => "false" }
41
41
  Define the packages(multiple packages in a single shipment are allowed):
data/fedex.gemspec CHANGED
@@ -13,9 +13,9 @@ Gem::Specification.new do |s|
13
13
  s.description = %q{Ruby Library to use Fedex Web Services(version 10)}
14
14
 
15
15
  s.rubyforge_project = "fedex"
16
- s.add_development_dependency "rspec"
17
- s.add_dependency 'httparty'
18
- s.add_dependency 'nokogiri'
16
+ s.add_development_dependency "rspec", '~> 2.6.0'
17
+ s.add_dependency 'httparty', '~> 0.8.0'
18
+ s.add_dependency 'nokogiri', '~> 1.5.0'
19
19
  # s.add_runtime_dependency "rest-client"
20
20
 
21
21
  s.files = `git ls-files`.split("\n")
@@ -64,7 +64,7 @@ module Fedex
64
64
  rate_details = [response[:rate_reply][:rate_reply_details][:rated_shipment_details]].flatten.first[:shipment_rate_detail]
65
65
  rate = Fedex::Rate.new(rate_details)
66
66
  else
67
- error_message = (response[:rate_reply].nil? ? api_response["Fault"]["detail"]["fault"]["details"]["ValidationFailureDetail"]["message"] : response[:rate_reply][:notifications][:message]) rescue "Unexpected error has occurred..."
67
+ error_message = (response[:rate_reply].nil? ? api_response["Fault"]["detail"]["fault"]["details"]["ValidationFailureDetail"]["message"] : [response[:rate_reply][:notifications]].flatten.first[:message]) rescue "Unexpected error has occurred"
68
68
  raise RateError, error_message
69
69
  end
70
70
  end
@@ -129,7 +129,7 @@ module Fedex
129
129
  def add_requested_shipment(xml)
130
130
  xml.RequestedShipment{
131
131
  xml.DropoffType @shipping_options[:drop_off_type] ||= "REGULAR_PICKUP"
132
- xml.ServiceType @service_type
132
+ xml.ServiceType service_type
133
133
  xml.PackagingType @shipping_options[:packaging_type] ||= "YOUR_PACKAGING"
134
134
  add_shipper(xml)
135
135
  add_recipient(xml)
@@ -276,5 +276,13 @@ module Fedex
276
276
  (!response[:rate_reply].nil? and %w{SUCCESS WARNING NOTE}.include? response[:rate_reply][:highest_severity])
277
277
  end
278
278
 
279
+ # Use GROUND_HOME_DELIVERY for shipments going to a residential address within the US.
280
+ def service_type
281
+ if @recipient[:residential].to_s =~ /true/i and @service_type =~ /GROUND/i and @recipient[:country_code] =~ /US/i
282
+ "GROUND_HOME_DELIVERY"
283
+ else
284
+ @service_type
285
+ end
286
+ end
279
287
  end
280
288
  end
data/lib/fedex/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  #Sept-2011
2
2
  module Fedex
3
- VERSION = "0.0.1"
3
+ VERSION = "0.1.0"
4
4
  end
data/spec/fedex_spec.rb CHANGED
@@ -1,8 +1,13 @@
1
1
  require 'spec_helper'
2
2
  describe Fedex::Shipment do
3
3
  let(:test_keys) do
4
- {:key => "RSkI5uThcfmtpm3I", :password => "RHhaZOG1MpDJ6QvSzxG0N06Ue", :account_number => "510087143", :meter => "118546765", :mode => "test"}
4
+ {:key => "xxxx", :password => "xxxx", :account_number => "xxxx", :meter => "xxxx", :mode => "test"}
5
5
  end
6
+
7
+ let(:production_keys) do
8
+ {:key => "xxxx", :password => "xxxx", :account_number => "xxxx", :meter => "xxxx", :mode => "production"}
9
+ end
10
+
6
11
  context "missing required parameters" do
7
12
  it "should raise Fedex::Rate exception" do
8
13
  lambda{ Fedex::Shipment.new}.should raise_error(Fedex::RateError)
@@ -14,38 +19,80 @@ describe Fedex::Shipment do
14
19
  it "should create a valid instance" do
15
20
  subject.should be_an_instance_of(Fedex::Shipment)
16
21
  end
17
- end
18
-
19
- before(:each) do
20
- @fedex = Fedex::Shipment.new(test_keys)
21
- @shipper = {:name => "Sender", :company => "Company", :phone_number => "555-555-5555", :address => "Main Street", :city => "Harrison", :state => "AR", :postal_code => "72601", :country_code => "US"}
22
- @recipient = {:name => "Recipient", :company => "Company", :phone_number => "555-555-5555", :address => "Main Street", :city => "Franklin Park", :state => "IL", :postal_code => "60131", :country_code => "US", :residential => "false"}
23
- @packages = []
24
- @packages << { :weight => {:units => "LB", :value => 2},
25
- :dimensions => {:length => 10, :width => 5, :height => 4, :units => "IN" } }
26
- @packages << { :weight => {:units => "LB", :value => 6},
27
- :dimensions => {:length => 5, :width => 5, :height => 4, :units => "IN" } }
28
- @shipping_options = { :packaging_type => "YOUR_PACKAGING", :drop_off_type => "REGULAR_PICKUP" }
29
22
  end
30
23
 
31
- context "Domestic Shipment" do
32
- describe "rate" do
33
- it "should return rate" do
34
- rate = @fedex.rate({:shipper=>@shipper, :recipient => @recipient, :packages => @packages, :service_type => "FEDEX_GROUND"})
35
- rate.should be_an_instance_of(Fedex::Rate)
24
+ context "Published Rates(Development Mode)" do
25
+ before(:each) do
26
+ @fedex = Fedex::Shipment.new(test_keys)
27
+ @shipper = {:name => "Sender", :company => "Company", :phone_number => "555-555-5555", :address => "Main Street", :city => "Harrison", :state => "AR", :postal_code => "72601", :country_code => "US"}
28
+ @recipient = {:name => "Recipient", :company => "Company", :phone_number => "555-555-5555", :address => "Main Street", :city => "Frankin Park", :state => "IL", :postal_code => "60131", :country_code => "US", :residential => true }
29
+ @packages = []
30
+ @packages << { :weight => {:units => "LB", :value => 2},
31
+ :dimensions => {:length => 10, :width => 5, :height => 4, :units => "IN" } }
32
+ @packages << { :weight => {:units => "LB", :value => 6},
33
+ :dimensions => {:length => 5, :width => 5, :height => 4, :units => "IN" } }
34
+ @shipping_options = { :packaging_type => "YOUR_PACKAGING", :drop_off_type => "REGULAR_PICKUP" }
35
+ end
36
+
37
+ context "Domestic Shipment" do
38
+ describe "rate" do
39
+ it "should return rate" do
40
+ rate = @fedex.rate({:shipper=>@shipper, :recipient => @recipient, :packages => @packages, :service_type => "FEDEX_GROUND"})
41
+ rate.should be_an_instance_of(Fedex::Rate)
42
+ puts rate.total_net_charge
43
+
44
+ end
36
45
  end
37
46
  end
47
+
48
+ context "Canadian Shipment" do
49
+ describe "rate" do
50
+ it "shoule return international fees" do
51
+ recipient = {:name => "Recipient", :company => "Company", :phone_number => "555-555-5555", :address=>"Address Line 1", :city => "Richmond", :state => "BC",
52
+ :postal_code => "V7C4V4", :country_code => "CA", :residential => "true" }
53
+ rate = @fedex.rate({:shipper => @shipper, :recipient => recipient, :packages => @packages, :service_type => "FEDEX_GROUND", :shipping_options => @shipping_options })
54
+ rate.should be_an_instance_of(Fedex::Rate)
55
+ puts rate.total_net_charge
56
+ end
57
+ end
58
+ end
38
59
  end
39
60
 
40
- context "Canadian Shipment" do
41
- describe "rate" do
42
- it "shoule return international fees" do
43
- recipient = {:name => "Recipient", :company => "Company", :phone_number => "555-555-5555", :address=>"Address Line 1", :city => "Richmond", :state => "BC",
44
- :postal_code => "V7C4V4", :country_code => "CA", :residential => false }
45
- rate = @fedex.rate({:shipper => @shipper, :recipient => recipient, :packages => @packages, :service_type => "FEDEX_GROUND", :shipping_options => @shipping_options })
46
- rate.should be_an_instance_of(Fedex::Rate)
61
+ context "Discounted Rates(Production Mode)" do
62
+ before(:each) do
63
+ @fedex = Fedex::Shipment.new(production_keys)
64
+ @shipper = {:name => "Sender", :company => "Company", :phone_number => "555-555-5555", :address => "Main Street", :city => "Harrison", :state => "AR", :postal_code => "72601", :country_code => "US"}
65
+ @recipient = {:name => "Recipient", :company => "Company", :phone_number => "555-555-5555", :address => "Main Street", :city => "Frankin Park", :state => "IL", :postal_code => "60131", :country_code => "US", :residential => true }
66
+ @packages = []
67
+ @packages << { :weight => {:units => "LB", :value => 2},
68
+ :dimensions => {:length => 10, :width => 5, :height => 4, :units => "IN" } }
69
+ @packages << { :weight => {:units => "LB", :value => 6},
70
+ :dimensions => {:length => 5, :width => 5, :height => 4, :units => "IN" } }
71
+ @shipping_options = { :packaging_type => "YOUR_PACKAGING", :drop_off_type => "REGULAR_PICKUP" }
72
+ end
73
+
74
+ context "Domestic Shipment" do
75
+ describe "rate" do
76
+ it "should return rate" do
77
+ rate = @fedex.rate({:shipper=>@shipper, :recipient => @recipient, :packages => @packages, :service_type => "FEDEX_GROUND"})
78
+ rate.should be_an_instance_of(Fedex::Rate)
79
+ puts rate.total_net_charge
80
+
81
+ end
47
82
  end
48
83
  end
49
- end
50
84
 
85
+ context "Canadian Shipment" do
86
+ describe "rate" do
87
+ it "shoule return international fees" do
88
+ recipient = {:name => "Recipient", :company => "Company", :phone_number => "555-555-5555", :address=>"Address Line 1", :city => "Richmond", :state => "BC",
89
+ :postal_code => "V7C4V4", :country_code => "CA", :residential => "true" }
90
+ rate = @fedex.rate({:shipper => @shipper, :recipient => recipient, :packages => @packages, :service_type => "FEDEX_GROUND", :shipping_options => @shipping_options })
91
+ rate.should be_an_instance_of(Fedex::Rate)
92
+ puts rate.total_net_charge
93
+ end
94
+ end
95
+ end
96
+ end
97
+
51
98
  end
metadata CHANGED
@@ -1,75 +1,56 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: fedex
3
- version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 1
10
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Jazmin Schroeder
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-09-29 00:00:00 -05:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-03 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: rspec
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70151002532920 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.6.0
33
22
  type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: httparty
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70151002532920
25
+ - !ruby/object:Gem::Dependency
26
+ name: httparty
27
+ requirement: &70151002532420 !ruby/object:Gem::Requirement
39
28
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 0.8.0
47
33
  type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: nokogiri
51
34
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70151002532420
36
+ - !ruby/object:Gem::Dependency
37
+ name: nokogiri
38
+ requirement: &70151002531960 !ruby/object:Gem::Requirement
53
39
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 1.5.0
61
44
  type: :runtime
62
- version_requirements: *id003
45
+ prerelease: false
46
+ version_requirements: *70151002531960
63
47
  description: Ruby Library to use Fedex Web Services(version 10)
64
- email:
48
+ email:
65
49
  - jazminschroeder@gmail.com
66
50
  executables: []
67
-
68
51
  extensions: []
69
-
70
52
  extra_rdoc_files: []
71
-
72
- files:
53
+ files:
73
54
  - .gitignore
74
55
  - .rspec
75
56
  - Gemfile
@@ -82,40 +63,30 @@ files:
82
63
  - lib/fedex/version.rb
83
64
  - spec/fedex_spec.rb
84
65
  - spec/spec_helper.rb
85
- has_rdoc: true
86
66
  homepage: https://github.com/jazminschroeder/fedex
87
67
  licenses: []
88
-
89
68
  post_install_message:
90
69
  rdoc_options: []
91
-
92
- require_paths:
70
+ require_paths:
93
71
  - lib
94
- required_ruby_version: !ruby/object:Gem::Requirement
72
+ required_ruby_version: !ruby/object:Gem::Requirement
95
73
  none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
103
- required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
79
  none: false
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- hash: 3
109
- segments:
110
- - 0
111
- version: "0"
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
112
84
  requirements: []
113
-
114
85
  rubyforge_project: fedex
115
- rubygems_version: 1.3.7
86
+ rubygems_version: 1.8.6
116
87
  signing_key:
117
88
  specification_version: 3
118
89
  summary: Fedex Rate Webservice
119
- test_files:
90
+ test_files:
120
91
  - spec/fedex_spec.rb
121
92
  - spec/spec_helper.rb