shipping 1.2.0 → 1.2.1
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/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
|