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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d905aab2d396bd1cf928cde23d9ecc87f4a9df4f
4
- data.tar.gz: 40e4465e6fbaaf6c4d32915bea1e855715c7e1fb
3
+ metadata.gz: 7a04f96cc2b90d9c64fafda24e2536cfee3f3747
4
+ data.tar.gz: ba124932814b75aabd5b1cd29a01574487c587e3
5
5
  SHA512:
6
- metadata.gz: 4e16fff7be931b660f77c0561a3b15490b2d9d2c20912421c5954de0dd068c5fd06b4604aab2d1c230f975865fa741f6d6a48b482f391224b7f0f96a891445d8
7
- data.tar.gz: 400adfdb112f80af216710749209a8d5f0580e0d11028077b73e3ea5453851d2579d552c3a921f331e686ccbe9a95987579cf8a2bc9a6d4f42394f3f970023bb
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
- require 'ontrac'
9
+ require 'ontrac'
10
10
 
11
- include ::Ontrac::WebServices
12
- include ::Ontrac::WebServices::Definitions
11
+ include ::Ontrac::WebServices
12
+ include ::Ontrac::WebServices::Definitions
13
13
 
14
- credentials = Service::Credentials.new("37", "testpass", "test")
15
- service = Service.new(credentials, StringIO.new(debug_output = ""))
14
+ credentials = Service::Credentials.new("37", "testpass", "test")
15
+ service = Service.new(credentials, StringIO.new(debug_output = ""))
16
16
 
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"
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
- 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
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
  ```
@@ -1,3 +1,3 @@
1
1
  module Ontrac
2
- VERSION = "2.0.1"
2
+ VERSION = "2.1.0"
3
3
  end
@@ -10,18 +10,9 @@ module Ontrac::WebServices
10
10
  end
11
11
 
12
12
  class Service
13
- class Credentials
14
- attr_reader :account, :password, :environment
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
- url_base, @credentials.account, service_name, CGI.escape(@credentials.password)
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
@@ -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.1
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: 2016-02-03 00:00:00.000000000 Z
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.2.3
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