lob 5.1.0 → 5.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +2 -5
- data/CHANGELOG.md +19 -0
- data/README.md +13 -4
- data/examples/README.md +4 -0
- data/examples/self_mailers.rb +37 -0
- data/lib/lob/client.rb +15 -0
- data/lib/lob/resources/bulk_intl_verifications.rb +26 -0
- data/lib/lob/resources/bulk_us_verifications.rb +27 -0
- data/lib/lob/resources/resource_base.rb +8 -5
- data/lib/lob/resources/self_mailer.rb +14 -0
- data/lib/lob/version.rb +1 -1
- data/lob.gemspec +4 -4
- data/spec/lob/resources/bulk_intl_verifications_spec.rb +30 -0
- data/spec/lob/resources/bulk_us_verifications_spec.rb +37 -0
- data/spec/lob/resources/check_spec.rb +21 -0
- data/spec/lob/resources/intl_verifications_spec.rb +4 -7
- data/spec/lob/resources/letter_spec.rb +21 -1
- data/spec/lob/resources/postcard_spec.rb +30 -5
- data/spec/lob/resources/resource_base_spec.rb +2 -2
- data/spec/lob/resources/self_mailer_spec.rb +177 -0
- data/spec/samples/sfm-12x9-inside.pdf +0 -0
- data/spec/samples/sfm-12x9-outside.pdf +0 -0
- data/spec/samples/sfm-6x18-inside.pdf +0 -0
- data/spec/samples/sfm-6x18-outside.pdf +0 -0
- data/spec/spec_helper.rb +2 -2
- metadata +29 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 11eb162180fd2d34bf35f62e3b3e0abdb3319c55d126c0cde0b8653952bc3663
|
4
|
+
data.tar.gz: 7631ad45c98fdd77acaef477d2ce59f63adad41c4f765f9f738a42808f7d2ba6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ce91dceebe1903673e9b782c5af29012f06c7b8aea44d399b49d7efd06cc5975b336db6c369cea13cab0c160511606ecd85fefdff52fe5f9761bd04bd8e5730
|
7
|
+
data.tar.gz: 7cc830a0ac6fba54f81352c050b7baa2f732bb50146ac3dcedf5c9fc53b41dd2d1c4b3eed428639f254e25dfd77abd7aca67ae596986a236ff1d153073ad3d67
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
## [**5.3.0**](https://github.com/lob/lob-ruby/releases/tag/v5.3.0) (2021-08-25)
|
2
|
+
- [**190**](https://github.com/lob/lob-ruby/pull/190) Adds support for bulk AV endpoints
|
3
|
+
## [**5.2.0**](https://github.com/lob/lob-ruby/releases/tag/v5.2.0) (2021-05-03)
|
4
|
+
- [**188**](https://github.com/lob/lob-ruby/pull/188) Adds support for Self Mailers
|
5
|
+
## 5.1.2 (2021-02-18)
|
6
|
+
|
7
|
+
##### Chores and Bug Fixes
|
8
|
+
|
9
|
+
- [**185**](https://github.com/lob/lob-ruby/pull/185) Bumps rake to 12.3.3, adds Ruby 2.7, update example asset links, other cleanup.
|
10
|
+
## 5.1.1 (2020-05-21)
|
11
|
+
|
12
|
+
##### Chores
|
13
|
+
|
14
|
+
* **intl-verification:** update international verifications test mode fix ([#179](https://github.com/lob/lob-ruby/pull/179)) ([4ab7e7e2](https://github.com/lob/lob-ruby/commit/4ab7e7e2852706c37b00bd8f2df58207897bc0a3))
|
15
|
+
|
16
|
+
##### Bug Fixes
|
17
|
+
|
18
|
+
* **merge-variables:** convert to json ([fa93885f](https://github.com/lob/lob-ruby/commit/fa93885f2aab4537e100b82d8a9f53cdec042f2e))
|
19
|
+
|
1
20
|
## [**5.1.0**](https://github.com/lob/lob-ruby/releases/tag/v5.1.0)
|
2
21
|
- [**176**](https://github.com/lob/lob-ruby/pull/176) Adds support for Group Members (beta feature)
|
3
22
|
- [**175**](https://github.com/lob/lob-ruby/pull/175) Adds support for Groups (beta feature)
|
data/README.md
CHANGED
@@ -24,10 +24,10 @@ Supports Ruby 2.0.0 and greater.
|
|
24
24
|
|
25
25
|
Here's a general overview of the Lob services available, click through to read more.
|
26
26
|
|
27
|
-
- [Postcards API](https://lob.com/
|
28
|
-
- [Letters API](https://lob.com/
|
29
|
-
- [Checks API](https://lob.com/
|
30
|
-
- [Address Verification API](https://lob.com/
|
27
|
+
- [Postcards API](https://lob.com/products/print-mail/postcards)
|
28
|
+
- [Letters API](https://lob.com/products/print-mail/letters)
|
29
|
+
- [Checks API](https://lob.com/products/print-mail/checks)
|
30
|
+
- [Address Verification API](https://lob.com/products/address-verification)
|
31
31
|
|
32
32
|
Please read through the official [API Documentation](#api-documentation) to get a complete sense of what to expect from each endpoint.
|
33
33
|
|
@@ -130,6 +130,7 @@ There are simple scripts to demonstrate how to create all the core Lob objects (
|
|
130
130
|
- [US Verification API](https://lob.com/docs/ruby#us_verifications)
|
131
131
|
- [The US Verification Object](https://lob.com/docs/ruby#us_verifications_object)
|
132
132
|
- [Verify a US Address](https://lob.com/docs/ruby#us_verifications_create)
|
133
|
+
- [Bulk Verify US Addresses](https://lob.com/docs/ruby#bulk_us_verifications_create)
|
133
134
|
- [The US Zip Lookup Object](https://lob.com/docs/ruby#us_zip_lookups_object)
|
134
135
|
- [Lookup a US Zip Code](https://lob.com/docs/ruby#us_zip_lookups_create)
|
135
136
|
- [US Autocompletion API](https://lob.com/docs/ruby#us_autocompletions)
|
@@ -139,6 +140,7 @@ There are simple scripts to demonstrate how to create all the core Lob objects (
|
|
139
140
|
- **Int'l Verification API**
|
140
141
|
- [International Verifications](https://lob.com/docs/ruby#intl_verifications)
|
141
142
|
- [Verify an International Address](https://lob.com/docs/ruby#intl_verifications_create)
|
143
|
+
- [Bulk Verify International Addresses](https://lob.com/docs/ruby#bulk_intl_verifications_create)
|
142
144
|
- **Postcards API**
|
143
145
|
- [Postcards](https://lob.com/docs/ruby#postcards)
|
144
146
|
- [The Postcard Object](https://lob.com/docs/ruby#postcards_object)
|
@@ -146,6 +148,13 @@ There are simple scripts to demonstrate how to create all the core Lob objects (
|
|
146
148
|
- [Retrieve a Postcard](https://lob.com/docs/ruby#postcards_retrieve)
|
147
149
|
- [Cancel a Postcard](https://lob.com/docs/ruby#postcards_delete)
|
148
150
|
- [List all Postcards](https://lob.com/docs/ruby#postcards_list)
|
151
|
+
- **Self Mailers API**
|
152
|
+
- [Self Mailers](https://lob.com/docs/ruby#self_mailers)
|
153
|
+
- [The Self Mailer Object](https://lob.com/docs/ruby#self_mailers_object)
|
154
|
+
- [Create a Self Mailer](https://lob.com/docs/ruby#self_mailers_create)
|
155
|
+
- [Retrieve a Self Mailer](https://lob.com/docs/ruby#self_mailers_retrieve)
|
156
|
+
- [Cancel a Self Mailer](https://lob.com/docs/ruby#self_mailers_delete)
|
157
|
+
- [List all Self Mailers](https://lob.com/docs/ruby#self_mailers_list)
|
149
158
|
- **Letters API**
|
150
159
|
- [Letters](https://lob.com/docs/ruby#letters)
|
151
160
|
- [The Letter Object](https://lob.com/docs/ruby#letters_object)
|
data/examples/README.md
CHANGED
@@ -31,3 +31,7 @@ An example showing how to create a letter using Lob's [Letters API](https://lob.
|
|
31
31
|
## /postcards.rb
|
32
32
|
|
33
33
|
An example showing how to create a postcard using Lob's [Postcards API](https://lob.com/services/postcards).
|
34
|
+
|
35
|
+
## /self_mailers.rb
|
36
|
+
|
37
|
+
An example showing how to create a self mailer using Lob's Self Mailers API.
|
@@ -0,0 +1,37 @@
|
|
1
|
+
$:.unshift File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
require 'lob'
|
3
|
+
|
4
|
+
# initialize Lob object
|
5
|
+
lob = Lob::Client.new(api_key: 'YOUR_API_KEY_HERE')
|
6
|
+
|
7
|
+
# create a to address
|
8
|
+
to_address = lob.addresses.create(
|
9
|
+
name: "ToAddress",
|
10
|
+
address_line1: "120 6th Ave",
|
11
|
+
address_city: "Boston",
|
12
|
+
address_state: "MA",
|
13
|
+
address_country: "US",
|
14
|
+
address_zip: 12345
|
15
|
+
)
|
16
|
+
|
17
|
+
# create a from address
|
18
|
+
from_address = lob.addresses.create(
|
19
|
+
name: "FromAddress",
|
20
|
+
address_line1: "120 6th Ave",
|
21
|
+
address_city: "Boston",
|
22
|
+
address_state: "MA",
|
23
|
+
address_country: "US",
|
24
|
+
address_zip: 12345
|
25
|
+
)
|
26
|
+
|
27
|
+
|
28
|
+
# send a self mailer
|
29
|
+
puts lob.self_mailers.create(
|
30
|
+
description: "Beach Postcard",
|
31
|
+
to: to_address["id"],
|
32
|
+
from: from_address["id"],
|
33
|
+
metadata: { campaign: "Summer 2021 Beach" },
|
34
|
+
merge_variables: { name: "Albert" },
|
35
|
+
outside: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/templates/self_mailers/6x18_sfm_outside.pdf",
|
36
|
+
inside: "<h1>Hi {{name}}, please RSVP as soon as possible to reserve your lounge chair.</h1>"
|
37
|
+
)
|
data/lib/lob/client.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
require "lob/resources/address"
|
2
2
|
require "lob/resources/bank_account"
|
3
|
+
require "lob/resources/bulk_intl_verifications"
|
4
|
+
require "lob/resources/bulk_us_verifications"
|
3
5
|
require "lob/resources/check"
|
4
6
|
require "lob/resources/group"
|
5
7
|
require "lob/resources/groups_member"
|
6
8
|
require "lob/resources/intl_verifications"
|
7
9
|
require "lob/resources/letter"
|
8
10
|
require "lob/resources/postcard"
|
11
|
+
require "lob/resources/self_mailer"
|
9
12
|
require "lob/resources/us_autocompletions"
|
10
13
|
require "lob/resources/us_verifications"
|
11
14
|
require "lob/resources/us_zip_lookups"
|
@@ -31,6 +34,14 @@ module Lob
|
|
31
34
|
Lob::Resources::BankAccount.new(config)
|
32
35
|
end
|
33
36
|
|
37
|
+
def bulk_intl_verifications
|
38
|
+
Lob::Resources::BulkIntlVerifications.new(config)
|
39
|
+
end
|
40
|
+
|
41
|
+
def bulk_us_verifications
|
42
|
+
Lob::Resources::BulkUSVerifications.new(config)
|
43
|
+
end
|
44
|
+
|
34
45
|
def checks
|
35
46
|
Lob::Resources::Check.new(config)
|
36
47
|
end
|
@@ -55,6 +66,10 @@ module Lob
|
|
55
66
|
Lob::Resources::Postcard.new(config)
|
56
67
|
end
|
57
68
|
|
69
|
+
def self_mailers
|
70
|
+
Lob::Resources::SelfMailer.new(config)
|
71
|
+
end
|
72
|
+
|
58
73
|
def us_autocompletions
|
59
74
|
Lob::Resources::USAutocompletions.new(config)
|
60
75
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "lob/resources/resource_base"
|
2
|
+
|
3
|
+
module Lob
|
4
|
+
module Resources
|
5
|
+
class BulkIntlVerifications < Lob::Resources::ResourceBase
|
6
|
+
|
7
|
+
undef_method :list, :find, :create, :destroy
|
8
|
+
|
9
|
+
def initialize(config)
|
10
|
+
super(config)
|
11
|
+
@endpoint = "bulk/intl_verifications"
|
12
|
+
end
|
13
|
+
|
14
|
+
def verify(body={})
|
15
|
+
request = {
|
16
|
+
method: :post,
|
17
|
+
url: endpoint_url,
|
18
|
+
body: body
|
19
|
+
}
|
20
|
+
|
21
|
+
submit request
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "lob/resources/resource_base"
|
2
|
+
|
3
|
+
module Lob
|
4
|
+
module Resources
|
5
|
+
class BulkUSVerifications < Lob::Resources::ResourceBase
|
6
|
+
|
7
|
+
undef_method :list, :find, :create, :destroy
|
8
|
+
|
9
|
+
def initialize(config)
|
10
|
+
super(config)
|
11
|
+
@endpoint = "bulk/us_verifications"
|
12
|
+
end
|
13
|
+
|
14
|
+
def verify(body={}, query={})
|
15
|
+
request = {
|
16
|
+
method: :post,
|
17
|
+
url: endpoint_url,
|
18
|
+
body: body,
|
19
|
+
query: query
|
20
|
+
}
|
21
|
+
|
22
|
+
submit request
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -19,7 +19,7 @@ module Lob
|
|
19
19
|
query: query
|
20
20
|
}
|
21
21
|
|
22
|
-
submit
|
22
|
+
submit(request)
|
23
23
|
end
|
24
24
|
|
25
25
|
def find(resource_id)
|
@@ -28,7 +28,7 @@ module Lob
|
|
28
28
|
url: resource_url(resource_id)
|
29
29
|
}
|
30
30
|
|
31
|
-
submit
|
31
|
+
submit(request)
|
32
32
|
end
|
33
33
|
|
34
34
|
def create(body={}, headers={}, query={})
|
@@ -40,7 +40,7 @@ module Lob
|
|
40
40
|
query: query
|
41
41
|
}
|
42
42
|
|
43
|
-
submit
|
43
|
+
submit(request)
|
44
44
|
end
|
45
45
|
|
46
46
|
def destroy(resource_id)
|
@@ -49,7 +49,7 @@ module Lob
|
|
49
49
|
url: resource_url(resource_id)
|
50
50
|
}
|
51
51
|
|
52
|
-
submit
|
52
|
+
submit(request)
|
53
53
|
end
|
54
54
|
|
55
55
|
private
|
@@ -71,11 +71,14 @@ module Lob
|
|
71
71
|
if query != {}
|
72
72
|
url = "#{url}?#{build_nested_query(query)}"
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
begin
|
76
76
|
if method == :get || method == :delete
|
77
77
|
response = RestClient.send(method, url, headers)
|
78
78
|
else
|
79
|
+
if body[:merge_variables] and body[:merge_variables].class == Hash
|
80
|
+
body[:merge_variables] = body[:merge_variables].to_json()
|
81
|
+
end
|
79
82
|
response = RestClient.send(method, url, body, headers)
|
80
83
|
end
|
81
84
|
|
data/lib/lob/version.rb
CHANGED
data/lob.gemspec
CHANGED
@@ -18,11 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "rest-client", ">= 1
|
21
|
+
spec.add_dependency "rest-client", ">= 2.0.1", "< 3.0"
|
22
22
|
|
23
|
-
spec.add_development_dependency "rake", "~>
|
23
|
+
spec.add_development_dependency "rake", "~> 12.3.3"
|
24
24
|
spec.add_development_dependency "minitest", "~> 5.6.1"
|
25
25
|
spec.add_development_dependency "webmock", "~> 1.2"
|
26
|
-
spec.add_development_dependency "coveralls", "~> 0.8.
|
27
|
-
spec.add_development_dependency "simplecov", "~> 0.
|
26
|
+
spec.add_development_dependency "coveralls", "~> 0.8.13"
|
27
|
+
spec.add_development_dependency "simplecov", "~> 0.11.0"
|
28
28
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lob::Resources::BulkIntlVerifications do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@sample_params = {
|
7
|
+
addresses: [
|
8
|
+
{
|
9
|
+
primary_line: "123 Test St",
|
10
|
+
city: "HEARST",
|
11
|
+
state: "ONTARIO",
|
12
|
+
postal_code: "P0L1N0",
|
13
|
+
country: "CA"
|
14
|
+
}
|
15
|
+
]
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
subject { Lob::Client.new(api_key: API_KEY) }
|
20
|
+
|
21
|
+
describe "verify" do
|
22
|
+
it "should verify an international address" do
|
23
|
+
result = subject.bulk_intl_verifications.verify @sample_params
|
24
|
+
addresses = result["addresses"]
|
25
|
+
address = addresses.first
|
26
|
+
address["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lob::Resources::BulkUSVerifications do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@sample_params = {
|
7
|
+
addresses: [
|
8
|
+
{
|
9
|
+
recipient: "LOB.COM",
|
10
|
+
primary_line: "185 BERRY ST STE 6600",
|
11
|
+
city: "SAN FRANCISCO",
|
12
|
+
state: "CA",
|
13
|
+
zip_code: "94107"
|
14
|
+
}
|
15
|
+
]
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
subject { Lob::Client.new(api_key: API_KEY) }
|
20
|
+
|
21
|
+
describe "verify" do
|
22
|
+
it "should verify a US address" do
|
23
|
+
result = subject.bulk_us_verifications.verify @sample_params
|
24
|
+
addresses = result["addresses"]
|
25
|
+
address = addresses.first
|
26
|
+
address["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should allow 'case' in query params" do
|
30
|
+
result = subject.bulk_us_verifications.verify @sample_params, {case: "proper"}
|
31
|
+
addresses = result["addresses"]
|
32
|
+
address = addresses.first
|
33
|
+
address["recipient"].must_equal("Test Keys Do Not Verify Addresses")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -50,6 +50,27 @@ describe Lob::Resources::Check do
|
|
50
50
|
|
51
51
|
result["amount"].to_s.must_equal("2000.12")
|
52
52
|
end
|
53
|
+
|
54
|
+
it "should create a check with a merge variable conditional" do
|
55
|
+
new_address = subject.addresses.create @sample_address_params
|
56
|
+
|
57
|
+
new_bank_account = subject.bank_accounts.create(@sample_bank_account_params)
|
58
|
+
|
59
|
+
subject.bank_accounts.verify(new_bank_account["id"], amounts: [1, 2])
|
60
|
+
|
61
|
+
result = subject.checks.create(
|
62
|
+
bank_account: new_bank_account["id"],
|
63
|
+
to: new_address["id"],
|
64
|
+
from: new_address["id"],
|
65
|
+
amount: "2000.12",
|
66
|
+
attachment: "<html>{{#is_awesome}}You are awesome!{{/is_awesome}}</html>",
|
67
|
+
merge_variables: {
|
68
|
+
is_awesome: false
|
69
|
+
}
|
70
|
+
)
|
71
|
+
|
72
|
+
result["merge_variables"]["is_awesome"].must_equal(false)
|
73
|
+
end
|
53
74
|
end
|
54
75
|
|
55
76
|
|
@@ -15,13 +15,10 @@ describe Lob::Resources::IntlVerifications do
|
|
15
15
|
subject { Lob::Client.new(api_key: API_KEY) }
|
16
16
|
|
17
17
|
describe "verify" do
|
18
|
-
it "should
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
assert e.http_status == 403
|
23
|
-
assert e._response.headers.include?(:content_type)
|
24
|
-
end
|
18
|
+
it "should verify an international address" do
|
19
|
+
result = subject.intl_verifications.verify @sample_params
|
20
|
+
|
21
|
+
result["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
25
22
|
end
|
26
23
|
end
|
27
24
|
|
@@ -52,6 +52,26 @@ describe Lob::Resources::Letter do
|
|
52
52
|
|
53
53
|
new_letter["description"].must_equal("TestLetter")
|
54
54
|
end
|
55
|
+
|
56
|
+
it "should create a letter with a merge variable object" do
|
57
|
+
new_address = subject.addresses.create @sample_address_params
|
58
|
+
|
59
|
+
new_letter = subject.letters.create(
|
60
|
+
description: "TestLetter",
|
61
|
+
color: true,
|
62
|
+
file: "<html>{{data.name}}</html>",
|
63
|
+
to: new_address["id"],
|
64
|
+
from: @sample_address_params,
|
65
|
+
merge_variables: {
|
66
|
+
data: {
|
67
|
+
name: "Kobe"
|
68
|
+
}
|
69
|
+
}
|
70
|
+
)
|
71
|
+
|
72
|
+
new_letter["description"].must_equal("TestLetter")
|
73
|
+
new_letter["merge_variables"]["data"]["name"].must_equal("Kobe")
|
74
|
+
end
|
55
75
|
end
|
56
76
|
|
57
77
|
|
@@ -68,7 +88,7 @@ describe Lob::Resources::Letter do
|
|
68
88
|
)
|
69
89
|
|
70
90
|
result = subject.letters.find(new_letter["id"])
|
71
|
-
assert
|
91
|
+
assert %r{#{new_letter["description"]}} =~ result.to_s
|
72
92
|
end
|
73
93
|
end
|
74
94
|
|
@@ -37,7 +37,7 @@ describe Lob::Resources::Postcard do
|
|
37
37
|
description: @sample_postcard_params[:description],
|
38
38
|
to: new_address["id"],
|
39
39
|
back: @sample_postcard_params[:back],
|
40
|
-
front: "https://lob.com/
|
40
|
+
front: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/pc_4x6_front.pdf"
|
41
41
|
)
|
42
42
|
|
43
43
|
result["description"].must_equal(@sample_postcard_params[:description])
|
@@ -48,7 +48,7 @@ describe Lob::Resources::Postcard do
|
|
48
48
|
description: @sample_postcard_params[:description],
|
49
49
|
to: @sample_address_params,
|
50
50
|
back: @sample_postcard_params[:back],
|
51
|
-
front: "https://lob.com/
|
51
|
+
front: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/pc_4x6_front.pdf"
|
52
52
|
)
|
53
53
|
|
54
54
|
result["description"].must_equal(@sample_postcard_params[:description])
|
@@ -62,7 +62,7 @@ describe Lob::Resources::Postcard do
|
|
62
62
|
to: new_address["id"],
|
63
63
|
from: @sample_address_params,
|
64
64
|
back: @sample_postcard_params[:back],
|
65
|
-
front: "https://lob.com/
|
65
|
+
front: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/pc_4x6_front.pdf"
|
66
66
|
)
|
67
67
|
|
68
68
|
result["description"].must_equal(@sample_postcard_params[:description])
|
@@ -74,8 +74,8 @@ describe Lob::Resources::Postcard do
|
|
74
74
|
result = subject.postcards.create(
|
75
75
|
description: @sample_postcard_params[:description],
|
76
76
|
to: new_address["id"],
|
77
|
-
front: "https://lob.com/
|
78
|
-
back: "https://lob.com/
|
77
|
+
front: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/pc_4x6_front.pdf",
|
78
|
+
back: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/pc_4x6_back.pdf"
|
79
79
|
)
|
80
80
|
|
81
81
|
result["description"].must_equal(@sample_postcard_params[:description])
|
@@ -95,6 +95,31 @@ describe Lob::Resources::Postcard do
|
|
95
95
|
result["description"].must_equal(@sample_postcard_params[:description])
|
96
96
|
end
|
97
97
|
|
98
|
+
it "should create a postcard with a merge variable list" do
|
99
|
+
new_address = subject.addresses.create @sample_address_params
|
100
|
+
merge_variables = {
|
101
|
+
list: [
|
102
|
+
{
|
103
|
+
name: "Larissa"
|
104
|
+
},
|
105
|
+
{
|
106
|
+
name: "Larry"
|
107
|
+
}
|
108
|
+
]
|
109
|
+
}
|
110
|
+
|
111
|
+
result = subject.postcards.create(
|
112
|
+
description: @sample_postcard_params[:description],
|
113
|
+
to: new_address["id"],
|
114
|
+
back: "<html>{{#list}} {{name}} {{/list}}</html>",
|
115
|
+
front: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/pc_4x6_front.pdf",
|
116
|
+
merge_variables: merge_variables
|
117
|
+
)
|
118
|
+
|
119
|
+
result["description"].must_equal(@sample_postcard_params[:description])
|
120
|
+
result["merge_variables"]["list"][0]["name"].must_equal("Larissa")
|
121
|
+
result["merge_variables"]["list"][1]["name"].must_equal("Larry")
|
122
|
+
end
|
98
123
|
end
|
99
124
|
|
100
125
|
|
@@ -55,7 +55,7 @@ describe Lob::Resources::ResourceBase do
|
|
55
55
|
description: sample_postcard_params[:description],
|
56
56
|
to: new_address["id"],
|
57
57
|
back: sample_postcard_params[:back],
|
58
|
-
front: "https://lob.com/
|
58
|
+
front: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/pc_4x6_front.pdf"
|
59
59
|
}, {
|
60
60
|
"Idempotency-Key" => idempotency_key
|
61
61
|
})
|
@@ -64,7 +64,7 @@ describe Lob::Resources::ResourceBase do
|
|
64
64
|
description: sample_postcard_params[:description],
|
65
65
|
to: new_address["id"],
|
66
66
|
back: sample_postcard_params[:back],
|
67
|
-
front: "https://lob.com/
|
67
|
+
front: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/pc_4x6_front.pdf"
|
68
68
|
}, {
|
69
69
|
"Idempotency-Key" => idempotency_key
|
70
70
|
})
|
@@ -0,0 +1,177 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lob::Resources::SelfMailer do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@sample_address_params = {
|
7
|
+
name: "TestAddress",
|
8
|
+
email: "test@test.com",
|
9
|
+
address_line1: "123 Test Street",
|
10
|
+
address_line2: "Unit 199",
|
11
|
+
address_city: "Mountain View",
|
12
|
+
address_state: "CA",
|
13
|
+
address_country: "US",
|
14
|
+
address_zip: 94085
|
15
|
+
}
|
16
|
+
|
17
|
+
@sample_self_mailer_params = {
|
18
|
+
description: "Test Self Mailer",
|
19
|
+
outside: "<h1>Sample Self Mailer Outside</h1>",
|
20
|
+
inside: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/templates/self_mailers/6x18_sfm_inside.pdf",
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
subject { Lob::Client.new(api_key: API_KEY) }
|
25
|
+
|
26
|
+
describe "list" do
|
27
|
+
it "should list self mailers" do
|
28
|
+
self_mailers = subject.self_mailers.list()
|
29
|
+
assert self_mailers["object"] == "list"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
describe "create" do
|
35
|
+
it "should create a self mailer with address_id" do
|
36
|
+
new_address = subject.addresses.create @sample_address_params
|
37
|
+
|
38
|
+
result = subject.self_mailers.create(
|
39
|
+
description: @sample_self_mailer_params[:description],
|
40
|
+
to: new_address["id"],
|
41
|
+
outside: @sample_self_mailer_params[:outside],
|
42
|
+
inside: @sample_self_mailer_params[:inside],
|
43
|
+
)
|
44
|
+
|
45
|
+
result["description"].must_equal(@sample_self_mailer_params[:description])
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should create a self mailer with to address params" do
|
49
|
+
result = subject.self_mailers.create(
|
50
|
+
description: @sample_self_mailer_params[:description],
|
51
|
+
to: @sample_address_params,
|
52
|
+
outside: @sample_self_mailer_params[:outside],
|
53
|
+
inside: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/templates/self_mailers/6x18_sfm_inside.pdf"
|
54
|
+
)
|
55
|
+
|
56
|
+
result["description"].must_equal(@sample_self_mailer_params[:description])
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should create a self mailer with from address params" do
|
60
|
+
new_address = subject.addresses.create @sample_address_params
|
61
|
+
|
62
|
+
result = subject.self_mailers.create(
|
63
|
+
description: @sample_self_mailer_params[:description],
|
64
|
+
to: new_address["id"],
|
65
|
+
from: @sample_address_params,
|
66
|
+
outside: @sample_self_mailer_params[:outside],
|
67
|
+
inside: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/templates/self_mailers/6x18_sfm_inside.pdf"
|
68
|
+
)
|
69
|
+
|
70
|
+
result["description"].must_equal(@sample_self_mailer_params[:description])
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should create a self mailer with front and back as urls" do
|
74
|
+
new_address = subject.addresses.create @sample_address_params
|
75
|
+
|
76
|
+
result = subject.self_mailers.create(
|
77
|
+
description: @sample_self_mailer_params[:description],
|
78
|
+
to: new_address["id"],
|
79
|
+
outside: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/templates/self_mailers/6x18_sfm_outside.pdf",
|
80
|
+
inside: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/templates/self_mailers/6x18_sfm_inside.pdf"
|
81
|
+
)
|
82
|
+
|
83
|
+
result["description"].must_equal(@sample_self_mailer_params[:description])
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
it "should create a self mailer with front and back as PDFs" do
|
88
|
+
new_address = subject.addresses.create @sample_address_params
|
89
|
+
|
90
|
+
result = subject.self_mailers.create(
|
91
|
+
description: @sample_self_mailer_params[:description],
|
92
|
+
to: new_address["id"],
|
93
|
+
outside: File.new(File.expand_path("../../../samples/sfm-6x18-outside.pdf", __FILE__)),
|
94
|
+
inside: File.new(File.expand_path("../../../samples/sfm-6x18-inside.pdf", __FILE__))
|
95
|
+
)
|
96
|
+
|
97
|
+
result["description"].must_equal(@sample_self_mailer_params[:description])
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should create a self mailer with front and back as 12x9 PDFs" do
|
101
|
+
new_address = subject.addresses.create @sample_address_params
|
102
|
+
|
103
|
+
result = subject.self_mailers.create(
|
104
|
+
description: @sample_self_mailer_params[:description],
|
105
|
+
to: new_address["id"],
|
106
|
+
size: "12x9_bifold",
|
107
|
+
outside: File.new(File.expand_path("../../../samples/sfm-12x9-outside.pdf", __FILE__)),
|
108
|
+
inside: File.new(File.expand_path("../../../samples/sfm-12x9-inside.pdf", __FILE__))
|
109
|
+
)
|
110
|
+
|
111
|
+
result["description"].must_equal(@sample_self_mailer_params[:description])
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
it "should create a self mailer with a merge variable list" do
|
116
|
+
new_address = subject.addresses.create @sample_address_params
|
117
|
+
merge_variables = {
|
118
|
+
list: [
|
119
|
+
{
|
120
|
+
name: "Larissa"
|
121
|
+
},
|
122
|
+
{
|
123
|
+
name: "Larry"
|
124
|
+
}
|
125
|
+
]
|
126
|
+
}
|
127
|
+
|
128
|
+
result = subject.self_mailers.create(
|
129
|
+
description: @sample_self_mailer_params[:description],
|
130
|
+
to: new_address["id"],
|
131
|
+
outside: "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/templates/self_mailers/6x18_sfm_inside.pdf",
|
132
|
+
inside: "<html>{{#list}} {{name}} {{/list}}</html>",
|
133
|
+
merge_variables: merge_variables
|
134
|
+
)
|
135
|
+
|
136
|
+
result["description"].must_equal(@sample_self_mailer_params[:description])
|
137
|
+
result["merge_variables"]["list"][0]["name"].must_equal("Larissa")
|
138
|
+
result["merge_variables"]["list"][1]["name"].must_equal("Larry")
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
|
143
|
+
describe "find" do
|
144
|
+
it "should find a self mailer" do
|
145
|
+
new_address = subject.addresses.create @sample_address_params
|
146
|
+
|
147
|
+
new_self_mailer = subject.self_mailers.create(
|
148
|
+
description: @sample_self_mailer_params[:description],
|
149
|
+
to: new_address["id"],
|
150
|
+
outside: @sample_self_mailer_params[:outside],
|
151
|
+
inside: @sample_self_mailer_params[:inside]
|
152
|
+
)
|
153
|
+
|
154
|
+
result = subject.self_mailers.find(new_self_mailer["id"])
|
155
|
+
result["description"].must_equal(@sample_self_mailer_params[:description])
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
|
160
|
+
describe "destroy" do
|
161
|
+
it "should destroy a self mailer" do
|
162
|
+
new_address = subject.addresses.create @sample_address_params
|
163
|
+
|
164
|
+
new_self_mailer = subject.self_mailers.create(
|
165
|
+
description: @sample_self_mailer_params[:description],
|
166
|
+
to: new_address["id"],
|
167
|
+
outside: @sample_self_mailer_params[:outside],
|
168
|
+
inside: @sample_self_mailer_params[:inside]
|
169
|
+
)
|
170
|
+
|
171
|
+
result = subject.self_mailers.destroy(new_self_mailer["id"])
|
172
|
+
result["id"].must_equal(new_self_mailer["id"])
|
173
|
+
result["deleted"].must_equal(true)
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/spec/spec_helper.rb
CHANGED
@@ -3,10 +3,10 @@ $:.unshift File.expand_path("../lib", File.dirname(__FILE__))
|
|
3
3
|
require "simplecov"
|
4
4
|
require "coveralls"
|
5
5
|
|
6
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
6
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
|
7
7
|
SimpleCov::Formatter::HTMLFormatter,
|
8
8
|
Coveralls::SimpleCov::Formatter
|
9
|
-
]
|
9
|
+
])
|
10
10
|
SimpleCov.start
|
11
11
|
|
12
12
|
require "lob"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lob
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lob
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.0.1
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '3.0'
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 2.0.1
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '3.0'
|
@@ -36,14 +36,14 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
39
|
+
version: 12.3.3
|
40
40
|
type: :development
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
46
|
+
version: 12.3.3
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: minitest
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,28 +78,28 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.8.
|
81
|
+
version: 0.8.13
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.8.
|
88
|
+
version: 0.8.13
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: simplecov
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
95
|
+
version: 0.11.0
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 0.
|
102
|
+
version: 0.11.0
|
103
103
|
description: Lob API Ruby wrapper
|
104
104
|
email:
|
105
105
|
- support@lob.com
|
@@ -130,12 +130,15 @@ files:
|
|
130
130
|
- examples/csv_verify/verify.rb
|
131
131
|
- examples/letters.rb
|
132
132
|
- examples/postcards.rb
|
133
|
+
- examples/self_mailers.rb
|
133
134
|
- lib/lob.rb
|
134
135
|
- lib/lob/client.rb
|
135
136
|
- lib/lob/errors/invalid_request_error.rb
|
136
137
|
- lib/lob/errors/lob_error.rb
|
137
138
|
- lib/lob/resources/address.rb
|
138
139
|
- lib/lob/resources/bank_account.rb
|
140
|
+
- lib/lob/resources/bulk_intl_verifications.rb
|
141
|
+
- lib/lob/resources/bulk_us_verifications.rb
|
139
142
|
- lib/lob/resources/check.rb
|
140
143
|
- lib/lob/resources/group.rb
|
141
144
|
- lib/lob/resources/groups_member.rb
|
@@ -143,6 +146,7 @@ files:
|
|
143
146
|
- lib/lob/resources/letter.rb
|
144
147
|
- lib/lob/resources/postcard.rb
|
145
148
|
- lib/lob/resources/resource_base.rb
|
149
|
+
- lib/lob/resources/self_mailer.rb
|
146
150
|
- lib/lob/resources/us_autocompletions.rb
|
147
151
|
- lib/lob/resources/us_verifications.rb
|
148
152
|
- lib/lob/resources/us_zip_lookups.rb
|
@@ -151,6 +155,8 @@ files:
|
|
151
155
|
- spec/lob/errors/lob_error_spec.rb
|
152
156
|
- spec/lob/resources/address_spec.rb
|
153
157
|
- spec/lob/resources/bank_account_spec.rb
|
158
|
+
- spec/lob/resources/bulk_intl_verifications_spec.rb
|
159
|
+
- spec/lob/resources/bulk_us_verifications_spec.rb
|
154
160
|
- spec/lob/resources/check_spec.rb
|
155
161
|
- spec/lob/resources/group_spec.rb
|
156
162
|
- spec/lob/resources/intl_verifications_spec.rb
|
@@ -158,6 +164,7 @@ files:
|
|
158
164
|
- spec/lob/resources/member_spec.rb
|
159
165
|
- spec/lob/resources/postcard_spec.rb
|
160
166
|
- spec/lob/resources/resource_base_spec.rb
|
167
|
+
- spec/lob/resources/self_mailer_spec.rb
|
161
168
|
- spec/lob/resources/us_autocompletions_spec.rb
|
162
169
|
- spec/lob/resources/us_verifications_spec.rb
|
163
170
|
- spec/lob/resources/us_zip_lookups_spec.rb
|
@@ -165,6 +172,10 @@ files:
|
|
165
172
|
- spec/samples/8.5x11.pdf
|
166
173
|
- spec/samples/postcardback.pdf
|
167
174
|
- spec/samples/postcardfront.pdf
|
175
|
+
- spec/samples/sfm-12x9-inside.pdf
|
176
|
+
- spec/samples/sfm-12x9-outside.pdf
|
177
|
+
- spec/samples/sfm-6x18-inside.pdf
|
178
|
+
- spec/samples/sfm-6x18-outside.pdf
|
168
179
|
- spec/spec_helper.rb
|
169
180
|
homepage: https://github.com/lob/lob-ruby
|
170
181
|
licenses:
|
@@ -185,8 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
185
196
|
- !ruby/object:Gem::Version
|
186
197
|
version: '0'
|
187
198
|
requirements: []
|
188
|
-
|
189
|
-
rubygems_version: 2.5.2.3
|
199
|
+
rubygems_version: 3.0.3
|
190
200
|
signing_key:
|
191
201
|
specification_version: 4
|
192
202
|
summary: Ruby wrapper for Lob.com API with ActiveRecord-style syntax
|
@@ -194,6 +204,8 @@ test_files:
|
|
194
204
|
- spec/lob/errors/lob_error_spec.rb
|
195
205
|
- spec/lob/resources/address_spec.rb
|
196
206
|
- spec/lob/resources/bank_account_spec.rb
|
207
|
+
- spec/lob/resources/bulk_intl_verifications_spec.rb
|
208
|
+
- spec/lob/resources/bulk_us_verifications_spec.rb
|
197
209
|
- spec/lob/resources/check_spec.rb
|
198
210
|
- spec/lob/resources/group_spec.rb
|
199
211
|
- spec/lob/resources/intl_verifications_spec.rb
|
@@ -201,6 +213,7 @@ test_files:
|
|
201
213
|
- spec/lob/resources/member_spec.rb
|
202
214
|
- spec/lob/resources/postcard_spec.rb
|
203
215
|
- spec/lob/resources/resource_base_spec.rb
|
216
|
+
- spec/lob/resources/self_mailer_spec.rb
|
204
217
|
- spec/lob/resources/us_autocompletions_spec.rb
|
205
218
|
- spec/lob/resources/us_verifications_spec.rb
|
206
219
|
- spec/lob/resources/us_zip_lookups_spec.rb
|
@@ -208,4 +221,8 @@ test_files:
|
|
208
221
|
- spec/samples/8.5x11.pdf
|
209
222
|
- spec/samples/postcardback.pdf
|
210
223
|
- spec/samples/postcardfront.pdf
|
224
|
+
- spec/samples/sfm-12x9-inside.pdf
|
225
|
+
- spec/samples/sfm-12x9-outside.pdf
|
226
|
+
- spec/samples/sfm-6x18-inside.pdf
|
227
|
+
- spec/samples/sfm-6x18-outside.pdf
|
211
228
|
- spec/spec_helper.rb
|