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 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