ontrac-web-services 2.0.1 → 2.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.
- 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
|