lob 2.4.0 → 2.5.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: 1a8c0c830106e832bbae29edd30ba92113856d60
4
- data.tar.gz: cd9b46196b888da5ea9e7a4d85d692283b3c2adf
3
+ metadata.gz: 8e9405bed02fc2ea005d649b4563639b37a2a5d5
4
+ data.tar.gz: 238e9a1101eaf3aaf8848028a350508c60358a15
5
5
  SHA512:
6
- metadata.gz: bed40a4effe60e29f7ab30dbac740c0fc4be8d99a170acf0349a62d053878261d7d1d823f21fc35b731ef17d4766860090390949b6bd40fb2b0bbcf5ea017e0c
7
- data.tar.gz: 7686f7bf43a5f9ab78e08334dd072342569795d3b0c754518cf5f9dd37d5dc754ce57c3eb037e4af7de99daaca7211c8761956534fdddd14c05aa49022f2430a
6
+ metadata.gz: e762ca6ab03b0c90b578616270b7747ead4cc6152e73417656086d1cc09ff8b525118d3fbdc7e14851ee0463035d3d16c93d55c15a558088ae17993151ecf5fe
7
+ data.tar.gz: 1651326d4d44a238bbc1ff17ab4d9d4704bd80335eb298dbaad05f5f63296ab6275bb7b66d1da146c79318779955367956b6b7bfb1c64595f1f09cd2646b2b74
@@ -1,3 +1,6 @@
1
+ ## [**2.5.0**](https://github.com/lob/lob-ruby/releases/tag/v2.5.0)
2
+ - [**#140**] (https://github.com/lob/lob-ruby/pull/140) Adds access to response and headers
3
+
1
4
  ## [**2.4.0**](https://github.com/lob/lob-ruby/releases/tag/v2.4.0)
2
5
  - [**#136**] (https://github.com/lob/lob-ruby/pull/136) Adds find to routes
3
6
 
data/README.md CHANGED
@@ -1,7 +1,5 @@
1
1
  # lob-ruby
2
2
 
3
- [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/lob/lob-ruby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4
-
5
3
  [![Build Status](https://travis-ci.org/lob/lob-ruby.svg?branch=master)](https://travis-ci.org/lob/lob-ruby)
6
4
  [![Gem Version](https://badge.fury.io/rb/lob.svg)](http://badge.fury.io/rb/lob)
7
5
  [![Dependency Status](https://gemnasium.com/lob/lob-ruby.svg)](https://gemnasium.com/lob/lob-ruby)
@@ -85,6 +83,34 @@ When using zip codes with zero-prefixes, always quote them. For example when spe
85
83
 
86
84
  The Ruby interpreter assumes it's not of base-10 and tries to convert it to base-10 number. So that might result in an entirely different zip-code than intended.
87
85
 
86
+ #### Accessing Response Headers
87
+
88
+ You can access response headers via a hidden `headers` method on the response hash.
89
+
90
+ ```ruby
91
+ addresses = @lob.addresses.list
92
+
93
+ addresses._response.headers[:content_type]
94
+ # => "application/json; charset=utf-8"
95
+
96
+ addresses._response.headers[:rate_limit_window]
97
+ # => "60"
98
+
99
+ addresses._response.headers[:rate_limit_remaining]
100
+ # => "1234"
101
+ ```
102
+
103
+ You can also access headers from `Lob::InvalidRequestError`s.
104
+
105
+ ```ruby
106
+ begin
107
+ @lob.objects.create(name: "Test", file: "https://lob.com/test.pdf", bad_param: "bad_value")
108
+ rescue Lob::InvalidRequestError => e
109
+ e._response.headers[:content_type]
110
+ # => "application/json; charset=utf-8"
111
+ end
112
+ ```
113
+
88
114
  ## Examples
89
115
 
90
116
  We've provided various examples for you to try out [here](https://github.com/lob/lob-ruby/tree/master/examples).
@@ -2,7 +2,7 @@ $:.unshift File.expand_path("../lib", File.dirname(__FILE__))
2
2
  require 'lob'
3
3
 
4
4
  # initialize Lob object
5
- Lob.api_key = 'test_0dc8d51e0acffcb1880e0f19c79b2f5b0cc'
5
+ Lob.api_key = 'test_799ff27291c166d10ba191902ad02fb059c'
6
6
  @lob = Lob.load
7
7
 
8
8
  # create an address
@@ -29,6 +29,7 @@ from_address = @lob.addresses.create(
29
29
  bank_account = @lob.bank_accounts.create(
30
30
  routing_number: "322271627",
31
31
  account_number: "123456789",
32
+ account_type: "company",
32
33
  signatory: "John Doe"
33
34
  )
34
35
 
@@ -3,7 +3,7 @@ require 'lob'
3
3
  require 'csv'
4
4
 
5
5
  # Initialize Lob object
6
- Lob.api_key = 'test_0dc8d51e0acffcb1880e0f19c79b2f5b0cc'
6
+ Lob.api_key = 'test_799ff27291c166d10ba191902ad02fb059c'
7
7
  @lob = Lob.load
8
8
 
9
9
  # Load the HTML from postcard_front.html and postcard_back.html.
@@ -3,7 +3,7 @@ require 'open-uri'
3
3
  require 'lob'
4
4
 
5
5
  # initialize Lob object
6
- Lob.api_key = 'test_0dc8d51e0acffcb1880e0f19c79b2f5b0cc'
6
+ Lob.api_key = 'test_799ff27291c166d10ba191902ad02fb059c'
7
7
  @lob = Lob.load
8
8
 
9
9
  html = %{
@@ -2,7 +2,7 @@ $:.unshift File.expand_path("../lib", File.dirname(__FILE__))
2
2
  require 'lob'
3
3
 
4
4
  # initialize Lob object
5
- Lob.api_key = 'test_0dc8d51e0acffcb1880e0f19c79b2f5b0cc'
5
+ Lob.api_key = 'test_799ff27291c166d10ba191902ad02fb059c'
6
6
  @lob = Lob.load
7
7
 
8
8
  html = %{
@@ -2,7 +2,7 @@ $:.unshift File.expand_path("../lib", File.dirname(__FILE__))
2
2
  require 'lob'
3
3
 
4
4
  # initialize Lob object
5
- Lob.api_key = 'test_0dc8d51e0acffcb1880e0f19c79b2f5b0cc'
5
+ Lob.api_key = 'test_799ff27291c166d10ba191902ad02fb059c'
6
6
  @lob = Lob.load
7
7
 
8
8
  # HTML to send to the server
@@ -7,7 +7,7 @@ require 'lob'
7
7
  require 'street_address'
8
8
 
9
9
  # Initialize Lob object
10
- Lob.api_key = 'test_0dc8d51e0acffcb1880e0f19c79b2f5b0cc'
10
+ Lob.api_key = 'test_799ff27291c166d10ba191902ad02fb059c'
11
11
  @lob = Lob.load
12
12
 
13
13
  output = File.open(File.expand_path('../output.csv', __FILE__), 'w')
data/lib/lob.rb CHANGED
@@ -26,17 +26,25 @@ module Lob
26
26
  if method == :get || method == :delete
27
27
  # Hack to URL encode nested objects like metadata.
28
28
  url = "#{url}?#{build_nested_query(parameters)}"
29
- JSON.parse(RestClient.send(method, url, {
29
+ response = RestClient.send(method, url, {
30
30
  user_agent: 'Lob/v1 RubyBindings/' + clientVersion,
31
31
  "Lob-Version" => self.api_version
32
- }))
32
+ })
33
33
  else
34
- JSON.parse(RestClient.send(method, url, parameters, {
34
+ response = RestClient.send(method, url, parameters, {
35
35
  user_agent: 'Lob/v1 RubyBindings/' + clientVersion,
36
36
  "Lob-Version" => self.api_version
37
- }))
37
+ })
38
38
  end
39
39
 
40
+ body = JSON.parse(response)
41
+
42
+ body.define_singleton_method(:_response) do
43
+ response
44
+ end
45
+
46
+ return body
47
+
40
48
  rescue RestClient::ExceptionWithResponse => e
41
49
  handle_api_error(e)
42
50
  end
@@ -1,4 +1,5 @@
1
1
  module Lob
2
+
2
3
  class LobError < StandardError
3
4
  attr_reader :http_status, :http_body, :json_body
4
5
 
@@ -9,5 +10,11 @@ module Lob
9
10
  status_string = @http_status.nil? ? "" : "(Status #{@http_status}) "
10
11
  super("#{status_string}#{message} \n #{@http_body}")
11
12
  end
13
+
14
+ def _response
15
+ @json_body
16
+ end
17
+
12
18
  end
19
+
13
20
  end
@@ -1,3 +1,3 @@
1
1
  module Lob
2
- VERSION = "2.4.0"
2
+ VERSION = "2.5.0"
3
3
  end
@@ -5,7 +5,9 @@ describe Lob::V1::BankAccount do
5
5
  before :each do
6
6
  @sample_bank_account_params = {
7
7
  routing_number: "122100024",
8
- account_number: "123456789"
8
+ account_number: "123456789",
9
+ account_type: "company",
10
+ signatory: "John Doe"
9
11
  }
10
12
  end
11
13
 
@@ -21,11 +23,7 @@ describe Lob::V1::BankAccount do
21
23
  describe "create" do
22
24
 
23
25
  it "should create a bank account" do
24
- result = subject.bank_accounts.create(
25
- routing_number: @sample_bank_account_params[:routing_number],
26
- account_number: @sample_bank_account_params[:account_number],
27
- signatory: "John Doe"
28
- )
26
+ result = subject.bank_accounts.create(@sample_bank_account_params)
29
27
 
30
28
  result["account_number"].must_equal(@sample_bank_account_params[:account_number])
31
29
  end
@@ -35,11 +33,7 @@ describe Lob::V1::BankAccount do
35
33
 
36
34
  describe "find" do
37
35
  it "should find a bank account" do
38
- new_bank_account = subject.bank_accounts.create(
39
- routing_number: @sample_bank_account_params[:routing_number],
40
- account_number: @sample_bank_account_params[:account_number],
41
- signatory: "John Doe"
42
- )
36
+ new_bank_account = subject.bank_accounts.create(@sample_bank_account_params)
43
37
 
44
38
  result = subject.bank_accounts.find(new_bank_account["id"])
45
39
  result["id"].must_equal(new_bank_account["id"])
@@ -48,11 +42,7 @@ describe Lob::V1::BankAccount do
48
42
 
49
43
  describe "destroy" do
50
44
  it "should delete a bank_account" do
51
- new_bank_account = subject.bank_accounts.create(
52
- routing_number: @sample_bank_account_params[:routing_number],
53
- account_number: @sample_bank_account_params[:account_number],
54
- signatory: "John Doe"
55
- )
45
+ new_bank_account = subject.bank_accounts.create(@sample_bank_account_params)
56
46
 
57
47
  delete_result = subject.bank_accounts.destroy(new_bank_account["id"])
58
48
  assert_equal(new_bank_account["id"], delete_result["id"])
@@ -61,11 +51,7 @@ describe Lob::V1::BankAccount do
61
51
 
62
52
  describe "verify" do
63
53
  it "should verify a bank account" do
64
- new_bank_account = subject.bank_accounts.create(
65
- routing_number: @sample_bank_account_params[:routing_number],
66
- account_number: @sample_bank_account_params[:account_number],
67
- signatory: "John Doe"
68
- )
54
+ new_bank_account = subject.bank_accounts.create(@sample_bank_account_params)
69
55
 
70
56
  verify_result = subject.bank_accounts.verify(new_bank_account["id"], amounts: [12, 34])
71
57
  assert_equal(new_bank_account["id"], verify_result["id"])
@@ -17,7 +17,9 @@ describe Lob::V1::Check do
17
17
 
18
18
  @sample_bank_account_params = {
19
19
  routing_number: "122100024",
20
- account_number: "123456789"
20
+ account_number: "123456789",
21
+ account_type: "company",
22
+ signatory: "John Doe"
21
23
  }
22
24
  end
23
25
 
@@ -33,11 +35,7 @@ describe Lob::V1::Check do
33
35
  it "should create a check with bank account id" do
34
36
  new_address = subject.addresses.create @sample_address_params
35
37
 
36
- new_bank_account = subject.bank_accounts.create(
37
- routing_number: @sample_bank_account_params[:routing_number],
38
- account_number: @sample_bank_account_params[:account_number],
39
- signatory: "John Doe"
40
- )
38
+ new_bank_account = subject.bank_accounts.create(@sample_bank_account_params)
41
39
 
42
40
  subject.bank_accounts.verify(new_bank_account["id"], amounts: [1, 2])
43
41
 
@@ -57,11 +55,7 @@ describe Lob::V1::Check do
57
55
  it "should find a check" do
58
56
  new_address = subject.addresses.create @sample_address_params
59
57
 
60
- new_bank_account = subject.bank_accounts.create(
61
- routing_number: @sample_bank_account_params[:routing_number],
62
- account_number: @sample_bank_account_params[:account_number],
63
- signatory: "John Doe"
64
- )
58
+ new_bank_account = subject.bank_accounts.create(@sample_bank_account_params)
65
59
 
66
60
  subject.bank_accounts.verify(new_bank_account["id"], amounts: [1, 2])
67
61
 
@@ -62,4 +62,20 @@ describe Lob do
62
62
  lob.addresses.list
63
63
  Lob.api_version = "2014-11-24"
64
64
  end
65
+
66
+ it "should include the raw response" do
67
+ lob = Lob.load(api_key: ENV["LOB_API_KEY"])
68
+ result = lob.addresses.list
69
+ assert result._response.headers.include?(:content_type)
70
+ end
71
+
72
+ it "should include response headers for errors" do
73
+ lob = Lob.load(api_key: ENV["LOB_API_KEY"])
74
+ begin
75
+ lob.objects.create(name: "Test", file: "https://lob.com/test.pdf", bad_param: "bad_value")
76
+ rescue Lob::InvalidRequestError => e
77
+ assert e._response.headers.include?(:content_type)
78
+ end
79
+ end
80
+
65
81
  end
metadata CHANGED
@@ -1,139 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lob
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-12 00:00:00.000000000 Z
11
+ date: 2016-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.8'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 10.4.2
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 10.4.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 5.6.1
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 5.6.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.2'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.2'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: travis-lint
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: 2.0.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 2.0.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: coveralls
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: 0.8.1
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.8.1
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: 0.10.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 0.10.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: pry
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ~>
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
131
  version: 0.10.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ~>
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.10.0
139
139
  description: Lob API Ruby wrapper
@@ -143,8 +143,8 @@ executables: []
143
143
  extensions: []
144
144
  extra_rdoc_files: []
145
145
  files:
146
- - .gitignore
147
- - .travis.yml
146
+ - ".gitignore"
147
+ - ".travis.yml"
148
148
  - CHANGELOG.md
149
149
  - Gemfile
150
150
  - LICENSE.txt
@@ -208,17 +208,17 @@ require_paths:
208
208
  - lib
209
209
  required_ruby_version: !ruby/object:Gem::Requirement
210
210
  requirements:
211
- - - '>='
211
+ - - ">="
212
212
  - !ruby/object:Gem::Version
213
213
  version: '0'
214
214
  required_rubygems_version: !ruby/object:Gem::Requirement
215
215
  requirements:
216
- - - '>='
216
+ - - ">="
217
217
  - !ruby/object:Gem::Version
218
218
  version: '0'
219
219
  requirements: []
220
220
  rubyforge_project:
221
- rubygems_version: 2.0.14
221
+ rubygems_version: 2.4.6
222
222
  signing_key:
223
223
  specification_version: 4
224
224
  summary: Ruby wrapper for Lob.com API with ActiveRecord-style syntax