ontrac-web-services 2.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +46 -47
- data/lib/ontrac/version.rb +1 -1
- data/lib/ontrac/web_services/service.rb +5 -18
- data/test/test.rb +61 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a04f96cc2b90d9c64fafda24e2536cfee3f3747
|
4
|
+
data.tar.gz: ba124932814b75aabd5b1cd29a01574487c587e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b5322b4e624ce098fce7352db33647887552d622df52b3add4246c54b5173361c79817b38250d87877eb517638c299bf085cd2ab9ab72ba3f01eefb0c9133ae
|
7
|
+
data.tar.gz: f439b51e2591b98bc953be328689cd447a29eefd155e774fff4563cdd58ecc1b581984b12ea340f60d58482dfc12cbf26620973ed25f192d83734c23a02a3cf5
|
data/README.md
CHANGED
@@ -6,57 +6,56 @@ This gem provides an interface to the OnTrac web services API. It interfaces wi
|
|
6
6
|
### Creating a shipment with multiple packages
|
7
7
|
|
8
8
|
```ruby
|
9
|
-
|
9
|
+
require 'ontrac'
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
include ::Ontrac::WebServices
|
12
|
+
include ::Ontrac::WebServices::Definitions
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
credentials = Service::Credentials.new("37", "testpass", "test")
|
15
|
+
service = Service.new(credentials, StringIO.new(debug_output = ""))
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
28
|
-
request.consignee = Consignee.new.tap do |consignee|
|
29
|
-
consignee.Name = "Joe Shmoe"
|
30
|
-
consignee.Addr1 = "123 4th St"
|
31
|
-
consignee.Addr2 = "Suite 315"
|
32
|
-
consignee.City = "San Luis Obispo"
|
33
|
-
consignee.State = "CA"
|
34
|
-
consignee.Zip = "93401"
|
35
|
-
consignee.Phone = "(805) 555-1234"
|
36
|
-
end
|
37
|
-
request.Service = SERVICE_TYPE_GROUND
|
38
|
-
request.SignatureRequired = false
|
39
|
-
request.Residential = true
|
40
|
-
request.SaturdayDel = false
|
41
|
-
request.Declared = 0
|
42
|
-
request.Weight = package_weight
|
43
|
-
request.LabelType = LABEL_TYPE_PDF
|
44
|
-
request.ShipDate = Time.new.strftime("%Y-%m-%d")
|
45
|
-
end
|
17
|
+
requests = [ 10.1, 22, 15 ].map do |package_weight|
|
18
|
+
ShipmentRequest.new.tap do |request|
|
19
|
+
request.shipper = Shipper.new.tap do |shipper|
|
20
|
+
shipper.Name = "Fulfillment Circle"
|
21
|
+
shipper.Addr1 = "343 Third Street\nSuite 17"
|
22
|
+
shipper.City = "sparks"
|
23
|
+
shipper.State = "NV"
|
24
|
+
shipper.Zip = "89434"
|
25
|
+
shipper.Contact = "John D."
|
26
|
+
shipper.Phone = "(415) 350-2608"
|
46
27
|
end
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
$stderr.puts err.message, ""
|
56
|
-
$stderr.puts "Debug Output:", debug_output, ""
|
57
|
-
$stderr.puts "Root Error:", err.root_error, ""
|
58
|
-
$stderr.puts "Sub Errors:", err.sub_errors, ""
|
59
|
-
$stderr.puts "Backtrace:", $!.backtrace
|
28
|
+
request.consignee = Consignee.new.tap do |consignee|
|
29
|
+
consignee.Name = "Joe Shmoe"
|
30
|
+
consignee.Addr1 = "123 4th St"
|
31
|
+
consignee.Addr2 = "Suite 315"
|
32
|
+
consignee.City = "San Luis Obispo"
|
33
|
+
consignee.State = "CA"
|
34
|
+
consignee.Zip = "93401"
|
35
|
+
consignee.Phone = "(805) 555-1234"
|
60
36
|
end
|
37
|
+
request.Service = SERVICE_TYPE_GROUND
|
38
|
+
request.SignatureRequired = false
|
39
|
+
request.Residential = true
|
40
|
+
request.SaturdayDel = false
|
41
|
+
request.Declared = 0
|
42
|
+
request.Weight = package_weight
|
43
|
+
request.LabelType = LABEL_TYPE_PDF
|
44
|
+
request.ShipDate = Time.new.strftime("%Y-%m-%d")
|
45
|
+
end
|
46
|
+
end
|
61
47
|
|
48
|
+
begin
|
49
|
+
service.post_shipments(requests).each do |(tracking_number, label, charge)|
|
50
|
+
puts "tracking number: #{tracking_number}"
|
51
|
+
File.open("#{tracking_number}.pdf", "w") { |f| f << label }
|
52
|
+
puts "charge: #{charge}"
|
53
|
+
end
|
54
|
+
rescue ServiceException => err
|
55
|
+
$stderr.puts err.message, ""
|
56
|
+
$stderr.puts "Debug Output:", debug_output, ""
|
57
|
+
$stderr.puts "Root Error:", err.root_error, ""
|
58
|
+
$stderr.puts "Sub Errors:", err.sub_errors, ""
|
59
|
+
$stderr.puts "Backtrace:", $!.backtrace
|
60
|
+
end
|
62
61
|
```
|
data/lib/ontrac/version.rb
CHANGED
@@ -10,18 +10,9 @@ module Ontrac::WebServices
|
|
10
10
|
end
|
11
11
|
|
12
12
|
class Service
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
def initialize(account, password, environment)
|
17
|
-
@account = account or
|
18
|
-
raise ArgumentError.new("Missing OnTrac credential: account")
|
19
|
-
@password = password or
|
20
|
-
raise ArgumentError.new("Missing OnTrac credential: account")
|
21
|
-
@environment = environment or
|
22
|
-
raise ArgumentError.new("Missing OnTrac credential: environment")
|
23
|
-
end
|
24
|
-
end
|
13
|
+
Credentials = Struct.new(:account, :password)
|
14
|
+
|
15
|
+
API_BASE_URL = "https://www.shipontrac.net/OnTracWebServices/OnTracServices.svc/V2"
|
25
16
|
|
26
17
|
attr_accessor :debug_output
|
27
18
|
|
@@ -31,12 +22,8 @@ module Ontrac::WebServices
|
|
31
22
|
end
|
32
23
|
|
33
24
|
def service_url(service_name)
|
34
|
-
url_base = (@credentials.environment.to_sym == :production) ?
|
35
|
-
"https://www.shipontrac.net/OnTracWebServices/OnTracServices.svc/V2" :
|
36
|
-
"https://www.shipontrac.net/OnTracTestWebServices/OnTracServices.svc/V2"
|
37
|
-
|
38
25
|
"%s/%s/%s?pw=%s" % [
|
39
|
-
|
26
|
+
API_BASE_URL, @credentials.account, service_name, CGI.escape(@credentials.password)
|
40
27
|
]
|
41
28
|
end
|
42
29
|
|
@@ -120,4 +107,4 @@ module Ontrac::WebServices
|
|
120
107
|
raise err
|
121
108
|
end
|
122
109
|
end
|
123
|
-
end
|
110
|
+
end
|
data/test/test.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'logger'
|
4
|
+
require 'ontrac'
|
5
|
+
|
6
|
+
include ::Ontrac::WebServices
|
7
|
+
include ::Ontrac::WebServices::Definitions
|
8
|
+
|
9
|
+
credentials = Service::Credentials.new(ENV.fetch("ONTRAC_ACCOUNT"), ENV.fetch("ONTRAC_PASSWORD"))
|
10
|
+
service = Service.new(credentials, StringIO.new(debug_output = ""))
|
11
|
+
|
12
|
+
requests = [ 10.1, 22, 15 ].map do |package_weight|
|
13
|
+
ShipmentRequest.new.tap do |request|
|
14
|
+
request.shipper = Shipper.new.tap do |shipper|
|
15
|
+
shipper.Name = "Fulfillment Circle"
|
16
|
+
shipper.Addr1 = "343 Third Street\nSuite 17"
|
17
|
+
shipper.City = "sparks"
|
18
|
+
shipper.State = "NV"
|
19
|
+
shipper.Zip = "89434"
|
20
|
+
shipper.Contact = "John D."
|
21
|
+
shipper.Phone = "(415) 350-2608"
|
22
|
+
end
|
23
|
+
request.consignee = Consignee.new.tap do |consignee|
|
24
|
+
consignee.Name = "Joe Shmoe"
|
25
|
+
consignee.Addr1 = "123 4th St"
|
26
|
+
consignee.Addr2 = "Suite 315"
|
27
|
+
consignee.City = "San Luis Obispo"
|
28
|
+
consignee.State = "CA"
|
29
|
+
consignee.Zip = "93401"
|
30
|
+
consignee.Phone = "(805) 555-1234"
|
31
|
+
end
|
32
|
+
request.Service = SERVICE_TYPE_GROUND
|
33
|
+
request.SignatureRequired = false
|
34
|
+
request.Residential = true
|
35
|
+
request.SaturdayDel = false
|
36
|
+
request.Declared = 0
|
37
|
+
request.Weight = package_weight
|
38
|
+
request.LabelType = LABEL_TYPE_PDF
|
39
|
+
request.ShipDate = Time.new.strftime("%Y-%m-%d")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
logger = Logger.new($stderr)
|
44
|
+
begin
|
45
|
+
service.post_shipments(requests).each do |(tracking_number, label, charge)|
|
46
|
+
File.open("#{tracking_number}.pdf", "w") { |f| f << label }
|
47
|
+
logger.info("label: ./#{tracking_number}.pdf, charge: #{charge}")
|
48
|
+
end
|
49
|
+
rescue ServiceException => err
|
50
|
+
logger.error("OnTrac Service Exception: #{err.message}")
|
51
|
+
logger.error("Root Error: #{err.root_error}") if (err.root_error && !err.root_error.empty?)
|
52
|
+
err.sub_errors.each do |uid, sub_error|
|
53
|
+
logger.error("Sub Error (#{uid}): #{sub_error}")
|
54
|
+
end
|
55
|
+
raise
|
56
|
+
ensure
|
57
|
+
if ($! && !debug_output.empty?)
|
58
|
+
logger.debug("OnTrac HTTP debug output")
|
59
|
+
debug_output.each_line.map(&:strip).each(&logger.method(:debug))
|
60
|
+
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ontrac-web-services
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Abreu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -42,6 +42,7 @@ files:
|
|
42
42
|
- lib/ontrac/web_services/definitions.rb
|
43
43
|
- lib/ontrac/web_services/service.rb
|
44
44
|
- ontrac-web-services.gemspec
|
45
|
+
- test/test.rb
|
45
46
|
homepage: https://github.com/brewski/ontrac-web-services
|
46
47
|
licenses:
|
47
48
|
- MIT
|
@@ -62,9 +63,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
62
63
|
version: '0'
|
63
64
|
requirements: []
|
64
65
|
rubyforge_project:
|
65
|
-
rubygems_version: 2.
|
66
|
+
rubygems_version: 2.5.1
|
66
67
|
signing_key:
|
67
68
|
specification_version: 4
|
68
69
|
summary: Interfaces with the OnTrac web services API to look up shipping rates, generate
|
69
70
|
labels, and track shipments
|
70
|
-
test_files:
|
71
|
+
test_files:
|
72
|
+
- test/test.rb
|