shipping 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -2
- data/lib/extensions.rb +11 -0
- data/lib/shipping.rb +4 -2
- data/lib/shipping/fedex.rb +29 -28
- metadata +3 -2
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ require 'rake/rdoctask'
|
|
5
5
|
require 'rake/gempackagetask'
|
6
6
|
require 'rake/contrib/rubyforgepublisher'
|
7
7
|
|
8
|
-
PKG_VERSION = "1.2.
|
8
|
+
PKG_VERSION = "1.2.1"
|
9
9
|
|
10
10
|
PKG_FILES = FileList[
|
11
11
|
"lib/**/*", "bin/*", "test/**/*", "[A-Z]*", "Rakefile", "doc/**/*"
|
@@ -32,7 +32,7 @@ end
|
|
32
32
|
desc "Create documentation"
|
33
33
|
Rake::RDocTask.new("doc") { |rdoc|
|
34
34
|
rdoc.title = "Ruby Shipping - UPS, FedEx, USPS"
|
35
|
-
rdoc.rdoc_dir = '
|
35
|
+
rdoc.rdoc_dir = 'html'
|
36
36
|
rdoc.rdoc_files.include('README')
|
37
37
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
38
38
|
}
|
data/lib/extensions.rb
ADDED
data/lib/shipping.rb
CHANGED
@@ -26,15 +26,17 @@
|
|
26
26
|
|
27
27
|
begin
|
28
28
|
require 'rubygems'
|
29
|
-
require_gem 'builder', '~> 1.2'
|
30
29
|
rescue LoadError
|
31
|
-
|
30
|
+
nil
|
32
31
|
end
|
33
32
|
|
33
|
+
require 'builder'
|
34
34
|
require 'yaml'
|
35
35
|
require 'rexml/document'
|
36
36
|
require 'net/http'
|
37
37
|
require 'net/https'
|
38
|
+
|
39
|
+
require 'extensions'
|
38
40
|
require 'shipping/base'
|
39
41
|
require 'shipping/fedex'
|
40
42
|
require 'shipping/ups'
|
data/lib/shipping/fedex.rb
CHANGED
@@ -10,17 +10,17 @@ module Shipping
|
|
10
10
|
# Gets the total price of the shipping
|
11
11
|
def price
|
12
12
|
get_price
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
return REXML::XPath.first(@response, "//FDXRateReply/EstimatedCharges/DiscountedCharges/NetCharge").text.to_f
|
14
|
+
rescue
|
15
|
+
raise ShippingError, get_error
|
16
16
|
end
|
17
17
|
|
18
18
|
# Gets the base price of the shipping (with discounts taken into consideration)
|
19
19
|
def base_price
|
20
20
|
get_price
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
return REXML::XPath.first(@response, "//FDXRateReply/EstimatedCharges/DiscountedCharges/BaseCharge").text.to_f
|
22
|
+
rescue
|
23
|
+
raise ShippingError, get_error
|
24
24
|
end
|
25
25
|
|
26
26
|
# still not sure what the best way to handle this transaction's return data would be. Possibly a hash of the form {service => delivery_estimate}?
|
@@ -42,7 +42,7 @@ module Shipping
|
|
42
42
|
b.PostalCode @zip
|
43
43
|
b.CountryCode @country || "US"
|
44
44
|
}
|
45
|
-
b.ShipDate @ship_date unless @ship_date.
|
45
|
+
b.ShipDate @ship_date unless @ship_date.blank?
|
46
46
|
b.PackageCount @package_total || '1'
|
47
47
|
}
|
48
48
|
|
@@ -53,7 +53,7 @@ module Shipping
|
|
53
53
|
@required = [:name, :company, :phone, :email, :address, :city, :state, :zip]
|
54
54
|
@required += [:fedex_account, :fedex_url]
|
55
55
|
|
56
|
-
state = STATES.has_value?(@state.downcase) ? STATES.index(@state.downcase).upcase : @state.upcase
|
56
|
+
state = STATES.has_value?(@state.downcase) ? STATES.index(@state.downcase).upcase : @state.upcase rescue nil
|
57
57
|
|
58
58
|
@data = String.new
|
59
59
|
b = Builder::XmlMarkup.new :target => @data
|
@@ -98,13 +98,14 @@ module Shipping
|
|
98
98
|
def label
|
99
99
|
@required = [:phone, :email, :address, :city, :state, :zip ]
|
100
100
|
@required += [:sender_phone, :sender_email, :sender_address, :sender_city, :sender_state, :sender_zip ]
|
101
|
-
@required += [:fedex_account, :fedex_url]
|
101
|
+
@required += [:fedex_account, :fedex_url, :weight ]
|
102
102
|
|
103
103
|
@transaction_type ||= 'rate_ground'
|
104
104
|
@weight = (@weight.to_f*10).round/10.0
|
105
|
-
@declared_value = (@declared_value.to_f*100).round/100.0 unless @declared_value.
|
106
|
-
|
107
|
-
|
105
|
+
@declared_value = (@declared_value.to_f*100).round/100.0 unless @declared_value.blank?
|
106
|
+
|
107
|
+
state = STATES.has_value?(@state.downcase) ? STATES.index(@state.downcase).upcase : @state.upcase rescue nil
|
108
|
+
sender_state = STATES.has_value?(@sender_state.downcase) ? STATES.index(@sender_state.downcase).upcase : @sender_state.upcase rescue nil
|
108
109
|
|
109
110
|
@data = String.new
|
110
111
|
|
@@ -127,14 +128,14 @@ module Shipping
|
|
127
128
|
b.Contact { |b|
|
128
129
|
if @sender_name.to_s.size > 2
|
129
130
|
b.PersonName @sender_name
|
130
|
-
b.CompanyName @sender_company unless @sender_company.
|
131
|
+
b.CompanyName @sender_company unless @sender_company.blank?
|
131
132
|
elsif @sender_company.to_s.size > 2
|
132
|
-
b.PersonName @sender_name unless @sender_name.
|
133
|
+
b.PersonName @sender_name unless @sender_name.blank?
|
133
134
|
b.CompanyName @sender_company
|
134
135
|
else
|
135
136
|
raise ShippingError, "Either the sender_name or the sender_company value must be bigger than 2 characters."
|
136
137
|
end
|
137
|
-
b.Department @sender_department unless @sender_department.
|
138
|
+
b.Department @sender_department unless @sender_department.blank?
|
138
139
|
b.PhoneNumber @sender_phone.gsub(/[^\d]/,"")
|
139
140
|
b.PagerNumber @sender_pager.gsub(/[^\d]/,"") if @sender_pager.class == String
|
140
141
|
b.FaxNumber @sender_fax.gsub(/[^\d]/,"") if @sender_fax.class == String
|
@@ -142,7 +143,7 @@ module Shipping
|
|
142
143
|
}
|
143
144
|
b.Address { |b|
|
144
145
|
b.Line1 @sender_address
|
145
|
-
b.Line2 @sender_address2 unless @sender_address2.
|
146
|
+
b.Line2 @sender_address2 unless @sender_address2.blank?
|
146
147
|
b.City @sender_city
|
147
148
|
b.StateOrProvinceCode sender_state
|
148
149
|
b.PostalCode @sender_zip
|
@@ -153,14 +154,14 @@ module Shipping
|
|
153
154
|
b.Contact { |b|
|
154
155
|
if @name.to_s.size > 2
|
155
156
|
b.PersonName @name
|
156
|
-
b.CompanyName @company unless @company.
|
157
|
+
b.CompanyName @company unless @company.blank?
|
157
158
|
elsif @company.to_s.size > 2
|
158
|
-
b.PersonName @name unless @name.
|
159
|
+
b.PersonName @name unless @name.blank?
|
159
160
|
b.CompanyName @company
|
160
161
|
else
|
161
162
|
raise ShippingError, "Either the name or the company value must be bigger than 2 characters."
|
162
163
|
end
|
163
|
-
b.Department @department unless @department.
|
164
|
+
b.Department @department unless @department.blank?
|
164
165
|
b.PhoneNumber @phone.gsub(/[^\d]/,"")
|
165
166
|
b.PagerNumber @pager.gsub(/[^\d]/,"") if @pager.class == String
|
166
167
|
b.FaxNumber @fax.gsub(/[^\d]/,"") if @fax.class == String
|
@@ -168,7 +169,7 @@ module Shipping
|
|
168
169
|
}
|
169
170
|
b.Address { |b|
|
170
171
|
b.Line1 @address
|
171
|
-
b.Line2 @address2 unless @address2.
|
172
|
+
b.Line2 @address2 unless @address2.blank?
|
172
173
|
b.City @city
|
173
174
|
b.StateOrProvinceCode state
|
174
175
|
b.PostalCode @zip
|
@@ -179,18 +180,18 @@ module Shipping
|
|
179
180
|
b.PayorType PaymentTypes[@pay_type] || 'SENDER'
|
180
181
|
b.Payor { |b|
|
181
182
|
b.AccountNumber @payor_account_number
|
182
|
-
b.CountryCode @payor_country_code unless @payor_country_code.
|
183
|
-
} unless @payor_account_number.
|
183
|
+
b.CountryCode @payor_country_code unless @payor_country_code.blank?
|
184
|
+
} unless @payor_account_number.blank?
|
184
185
|
}
|
185
186
|
b.RMA { |b|
|
186
187
|
b.Number @rma_number
|
187
|
-
} unless @rma_number.
|
188
|
+
} unless @rma_number.blank?
|
188
189
|
b.Package { |b|
|
189
190
|
b.Weight @weight
|
190
191
|
b.DeclaredValue @declared_value || '99.00'
|
191
192
|
b.ReferenceInfo { |b|
|
192
193
|
b.CustomerReference @customer_reference
|
193
|
-
} unless @customer_reference.
|
194
|
+
} unless @customer_reference.blank?
|
194
195
|
b.ItemDescription @description || "Shipment"
|
195
196
|
}
|
196
197
|
b.SpecialServices { |b|
|
@@ -208,9 +209,9 @@ module Shipping
|
|
208
209
|
b.tag! :"E-MailAddress", @other_email
|
209
210
|
b.ShipAlert @other_ship_alert ? 'true' : 'false'
|
210
211
|
b.LanguageCode @other_language || 'EN' # FR also available
|
211
|
-
} unless @other_email.
|
212
|
+
} unless @other_email.blank?
|
212
213
|
}
|
213
|
-
} unless @message.
|
214
|
+
} unless @message.blank?
|
214
215
|
}
|
215
216
|
|
216
217
|
get_response @fedex_url
|
@@ -250,7 +251,7 @@ module Shipping
|
|
250
251
|
=end
|
251
252
|
|
252
253
|
# don't allow people to edit the response
|
253
|
-
response.freeze
|
254
|
+
return response.freeze
|
254
255
|
end
|
255
256
|
|
256
257
|
private
|
@@ -271,7 +272,7 @@ module Shipping
|
|
271
272
|
b.MeterNumber @fedex_meter
|
272
273
|
b.CarrierCode TransactionTypes[@transaction_type][1]
|
273
274
|
}
|
274
|
-
b.ShipDate @ship_date unless @ship_date.
|
275
|
+
b.ShipDate @ship_date unless @ship_date.blank?
|
275
276
|
b.DropoffType @dropoff_type || 'REGULARPICKUP'
|
276
277
|
b.Service ServiceTypes[@service_type] || ServiceTypes['ground_service'] # default to ground service
|
277
278
|
b.Packaging PackageTypes[@packaging_type] || 'YOURPACKAGING'
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
|
|
3
3
|
specification_version: 1
|
4
4
|
name: shipping
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.2.
|
7
|
-
date: 2005-
|
6
|
+
version: 1.2.1
|
7
|
+
date: 2005-09-15
|
8
8
|
summary: A general shipping module to find out the shipping prices via UPS or FedEx.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -27,6 +27,7 @@ platform: ruby
|
|
27
27
|
authors:
|
28
28
|
- Lucas Carlson
|
29
29
|
files:
|
30
|
+
- lib/extensions.rb
|
30
31
|
- lib/shipping
|
31
32
|
- lib/shipping.rb
|
32
33
|
- lib/shipping/base.rb
|