fedex 0.0.1 → 0.1.0

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