lob 2.5.1 → 3.0.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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -2
  3. data/CHANGELOG.md +9 -0
  4. data/CONTRIBUTING.md +19 -0
  5. data/Gemfile +0 -2
  6. data/README.md +19 -36
  7. data/examples/README.md +14 -6
  8. data/examples/checks.rb +6 -7
  9. data/examples/csv_checks/create_checks.rb +47 -0
  10. data/examples/csv_checks/input.csv +6 -0
  11. data/examples/csv_letters/create_letters.rb +40 -0
  12. data/examples/csv_letters/input.csv +6 -0
  13. data/examples/csv_letters/letter_template.html +33 -0
  14. data/examples/csv_postcards/create_postcards.rb +2 -3
  15. data/examples/letters.rb +4 -5
  16. data/examples/postcards.rb +4 -5
  17. data/examples/verify/verify.rb +3 -4
  18. data/lib/lob.rb +1 -91
  19. data/lib/lob/client.rb +61 -0
  20. data/lib/lob/resources/address.rb +24 -0
  21. data/lib/lob/resources/area.rb +16 -0
  22. data/lib/lob/resources/bank_account.rb +24 -0
  23. data/lib/lob/resources/check.rb +14 -0
  24. data/lib/lob/resources/country.rb +16 -0
  25. data/lib/lob/resources/letter.rb +14 -0
  26. data/lib/lob/resources/postcard.rb +14 -0
  27. data/lib/lob/resources/resource_base.rb +108 -0
  28. data/lib/lob/resources/route.rb +24 -0
  29. data/lib/lob/resources/state.rb +16 -0
  30. data/lib/lob/version.rb +1 -1
  31. data/spec/lob/{v1 → resources}/address_spec.rb +15 -14
  32. data/spec/lob/{v1 → resources}/area_spec.rb +2 -2
  33. data/spec/lob/{v1 → resources}/bank_account_spec.rb +2 -2
  34. data/spec/lob/{v1 → resources}/check_spec.rb +3 -2
  35. data/spec/lob/{v1 → resources}/country_spec.rb +2 -2
  36. data/spec/lob/{v1 → resources}/letter_spec.rb +2 -2
  37. data/spec/lob/{v1 → resources}/postcard_spec.rb +2 -2
  38. data/spec/lob/resources/resource_base_spec.rb +53 -0
  39. data/spec/lob/{v1 → resources}/route_spec.rb +2 -2
  40. data/spec/lob/{v1 → resources}/state_spec.rb +2 -2
  41. data/spec/lob_spec.rb +12 -45
  42. data/spec/spec_helper.rb +2 -0
  43. metadata +86 -89
  44. data/examples/jobs.rb +0 -91
  45. data/lib/lob/v1/address.rb +0 -41
  46. data/lib/lob/v1/area.rb +0 -27
  47. data/lib/lob/v1/bank_account.rb +0 -37
  48. data/lib/lob/v1/check.rb +0 -33
  49. data/lib/lob/v1/country.rb +0 -21
  50. data/lib/lob/v1/job.rb +0 -39
  51. data/lib/lob/v1/letter.rb +0 -33
  52. data/lib/lob/v1/object.rb +0 -33
  53. data/lib/lob/v1/postcard.rb +0 -33
  54. data/lib/lob/v1/resource.rb +0 -69
  55. data/lib/lob/v1/route.rb +0 -27
  56. data/lib/lob/v1/setting.rb +0 -25
  57. data/lib/lob/v1/state.rb +0 -21
  58. data/spec/lob/v1/job_spec.rb +0 -161
  59. data/spec/lob/v1/object_spec.rb +0 -72
  60. data/spec/lob/v1/resource_spec.rb +0 -41
  61. data/spec/lob/v1/setting_spec.rb +0 -21
data/examples/jobs.rb DELETED
@@ -1,91 +0,0 @@
1
- $:.unshift File.expand_path("../lib", File.dirname(__FILE__))
2
- require 'open-uri'
3
- require 'lob'
4
-
5
- # initialize Lob object
6
- Lob.api_key = 'test_799ff27291c166d10ba191902ad02fb059c'
7
- @lob = Lob.load
8
-
9
- html = %{
10
- <html>
11
- <head>
12
- <title>Lob.com Sample Photo</title>
13
- <style>
14
- *, *:before, *:after {
15
- -webkit-box-sizing: border-box;
16
- -moz-box-sizing: border-box;
17
- box-sizing: border-box;
18
- }
19
-
20
- @font-face {
21
- font-family: 'Loved by the King';
22
- font-style: normal;
23
- font-weight: 400;
24
- src: url('https://s3-us-west-2.amazonaws.com/lob-assets/LovedbytheKing.ttf') format('truetype');
25
- }
26
-
27
- body {
28
- width: 6.25in;
29
- height: 4.25in;
30
- margin: 0;
31
- padding: 0;
32
- /* If using an image, the background image should have dimensions of 1875x1275 pixels. */
33
- background-image: url(https://s3-us-west-2.amazonaws.com/lob-assets/beach.jpg);
34
- background-size: 6.25in 4.25in;
35
- background-repeat: no-repeat;
36
- }
37
-
38
- .text {
39
- margin: 50px;
40
- width: 400px;
41
- font-family: 'Loved by the King';
42
- font-size: 50px;
43
- font-weight: 700;
44
- color: white;
45
- text-shadow: 3px 3px black;
46
- }
47
- </style>
48
- </head>
49
-
50
- <body>
51
- <h1 class="text">Hello {{name}}!</h1>
52
- <p class="text">Join us for the {{event}}!</p>
53
- </body>
54
-
55
- </html>
56
- }
57
-
58
- object = @lob.objects.create(
59
- description: 'Test Object',
60
- file: html,
61
- data: { name: "Albert", event: "Summer 2015 Beach-athon" },
62
- setting: 201
63
- )
64
-
65
- # create a to address
66
- to_address = @lob.addresses.create(
67
- name: "ToAddress",
68
- address_line1: "120 6th Ave",
69
- address_city: "Boston",
70
- address_state: "MA",
71
- address_country: "US",
72
- address_zip: 12345
73
- )
74
-
75
- # create a from address
76
- from_address = @lob.addresses.create(
77
- name: "FromAddress",
78
- address_line1: "120 6th Ave",
79
- address_city: "Boston",
80
- address_state: "MA",
81
- address_country: "US",
82
- address_zip: 12345
83
- )
84
-
85
- # send the object you created
86
- puts @lob.jobs.create(
87
- description: "Michigan Logo to Harry",
88
- to: to_address["id"],
89
- from: from_address["id"],
90
- objects: object["id"]
91
- )
@@ -1,41 +0,0 @@
1
- module Lob
2
- module V1
3
- class Address
4
-
5
- def initialize(resource)
6
- @resource = resource
7
- end
8
-
9
- def verify(options={})
10
- Lob.submit(:post, address_verify_url, options)
11
- end
12
-
13
- def list(options={})
14
- Lob.submit(:get, address_url, options)
15
- end
16
-
17
- def find(address_id)
18
- Lob.submit :get, address_url(address_id)
19
- end
20
-
21
- def create(options = {})
22
- Lob.submit :post, address_url, options
23
- end
24
-
25
- def destroy(address_id)
26
- Lob.submit :delete, address_url(address_id)
27
- end
28
-
29
- private
30
-
31
- def address_url(address_id = nil)
32
- @resource.construct_url("addresses", address_id)
33
- end
34
-
35
- def address_verify_url
36
- @resource.construct_url("verify")
37
- end
38
-
39
- end
40
- end
41
- end
data/lib/lob/v1/area.rb DELETED
@@ -1,27 +0,0 @@
1
- module Lob
2
- module V1
3
- class Area
4
- def initialize(resource)
5
- @resource = resource
6
- end
7
-
8
- def list(options = {})
9
- Lob.submit(:get, area_url, options)
10
- end
11
-
12
- def find(lob_object_id)
13
- Lob.submit :get, area_url(lob_object_id)
14
- end
15
-
16
- def create(options = {})
17
- Lob.submit :post, area_url, options
18
- end
19
-
20
- private
21
-
22
- def area_url(area_id = nil)
23
- @resource.construct_url("areas", area_id)
24
- end
25
- end
26
- end
27
- end
@@ -1,37 +0,0 @@
1
- module Lob
2
- module V1
3
- class BankAccount
4
-
5
- def initialize(resource)
6
- @resource = resource
7
- end
8
-
9
- def list(options={})
10
- Lob.submit(:get, bank_account_url, options)
11
- end
12
-
13
- def find(bank_account_id)
14
- Lob.submit :get, bank_account_url(bank_account_id)
15
- end
16
-
17
- def create(options = {})
18
- Lob.submit :post, bank_account_url, options
19
- end
20
-
21
- def destroy(bank_account_id)
22
- Lob.submit :delete, bank_account_url(bank_account_id)
23
- end
24
-
25
- def verify(bank_account_id, options = {})
26
- Lob.submit :post, "#{bank_account_url(bank_account_id)}/verify", options
27
- end
28
-
29
- private
30
-
31
- def bank_account_url(bank_account_id = nil)
32
- @resource.construct_url("bank_accounts", bank_account_id)
33
- end
34
-
35
- end
36
- end
37
- end
data/lib/lob/v1/check.rb DELETED
@@ -1,33 +0,0 @@
1
- module Lob
2
- module V1
3
- class Check
4
-
5
- def initialize(resource)
6
- @resource = resource
7
- end
8
-
9
- def list(options={})
10
- Lob.submit(:get, check_url, options)
11
- end
12
-
13
- def find(check_id)
14
- Lob.submit :get, check_url(check_id)
15
- end
16
-
17
- def create(options = {})
18
- Lob.submit :post, check_url, options
19
- end
20
-
21
- def destroy(check_id)
22
- Lob.submit :delete, check_url(check_id)
23
- end
24
-
25
- private
26
-
27
- def check_url(check_id = nil)
28
- @resource.construct_url("checks", check_id)
29
- end
30
-
31
- end
32
- end
33
- end
@@ -1,21 +0,0 @@
1
- module Lob
2
- module V1
3
- class Country
4
-
5
- def initialize(resource)
6
- @resource = resource
7
- end
8
-
9
- def list(options={})
10
- Lob.submit(:get, country_url, options)
11
- end
12
-
13
- private
14
-
15
- def country_url
16
- @resource.construct_url("countries")
17
- end
18
-
19
- end
20
- end
21
- end
data/lib/lob/v1/job.rb DELETED
@@ -1,39 +0,0 @@
1
- module Lob
2
- module V1
3
- class Job
4
-
5
- def initialize(resource)
6
- @resource = resource
7
- end
8
-
9
- def list(options={})
10
- Lob.submit(:get, job_url, options)
11
- end
12
-
13
- def find(job_id)
14
- Lob.submit :get, job_url(job_id)
15
- end
16
-
17
- def create(options = {})
18
- if options[:objects].is_a?(Array)
19
- options[:objects].each_with_index do |object, index|
20
- options["object#{index+1}"] = object
21
- end
22
- else
23
- options["object1"] = options[:objects]
24
- end
25
- options.delete(:objects)
26
-
27
- Lob.submit :post, job_url, options
28
- end
29
-
30
-
31
- private
32
-
33
- def job_url(job_id = nil)
34
- @resource.construct_url("jobs", job_id)
35
- end
36
-
37
- end
38
- end
39
- end
data/lib/lob/v1/letter.rb DELETED
@@ -1,33 +0,0 @@
1
- module Lob
2
- module V1
3
- class Letter
4
-
5
- def initialize(resource)
6
- @resource = resource
7
- end
8
-
9
- def list(options={})
10
- Lob.submit(:get, letter_url, options)
11
- end
12
-
13
- def find(letter_id)
14
- Lob.submit :get, letter_url(letter_id)
15
- end
16
-
17
- def create(options = {})
18
- Lob.submit :post, letter_url, options
19
- end
20
-
21
- def destroy(letter_id)
22
- Lob.submit :delete, letter_url(letter_id)
23
- end
24
-
25
- private
26
-
27
- def letter_url(job_id = nil)
28
- @resource.construct_url("letters", job_id)
29
- end
30
-
31
- end
32
- end
33
- end
data/lib/lob/v1/object.rb DELETED
@@ -1,33 +0,0 @@
1
- module Lob
2
- module V1
3
- class Object
4
-
5
- def initialize(resource)
6
- @resource = resource
7
- end
8
-
9
- def list(options = {})
10
- Lob.submit(:get, object_url, options)
11
- end
12
-
13
- def find(lob_object_id)
14
- Lob.submit :get, object_url(lob_object_id)
15
- end
16
-
17
- def create(options = {})
18
- Lob.submit :post, object_url, options
19
- end
20
-
21
- def destroy(lob_object_id)
22
- Lob.submit :delete, object_url(lob_object_id)
23
- end
24
-
25
- private
26
-
27
- def object_url(lob_object_id = nil)
28
- @resource.construct_url("objects", lob_object_id)
29
- end
30
-
31
- end
32
- end
33
- end
@@ -1,33 +0,0 @@
1
- module Lob
2
- module V1
3
- class Postcard
4
-
5
- def initialize(resource)
6
- @resource = resource
7
- end
8
-
9
- def list(options={})
10
- Lob.submit(:get, postcard_url, options)
11
- end
12
-
13
- def find(postcard_id)
14
- Lob.submit :get, postcard_url(postcard_id)
15
- end
16
-
17
- def create(options = {})
18
- Lob.submit :post, postcard_url, options
19
- end
20
-
21
- def destroy(postcard_id)
22
- Lob.submit :delete, postcard_url(postcard_id)
23
- end
24
-
25
- private
26
-
27
- def postcard_url(postcard_id = nil)
28
- @resource.construct_url("postcards", postcard_id)
29
- end
30
-
31
- end
32
- end
33
- end
@@ -1,69 +0,0 @@
1
- module Lob
2
- module V1
3
- class Resource
4
-
5
- attr_accessor :options
6
-
7
- def initialize(options)
8
- @options = options
9
- end
10
-
11
- def areas
12
- Lob::V1::Area.new(self)
13
- end
14
-
15
- def addresses
16
- Lob::V1::Address.new(self)
17
- end
18
-
19
- def bank_accounts
20
- Lob::V1::BankAccount.new(self)
21
- end
22
-
23
- def checks
24
- Lob::V1::Check.new(self)
25
- end
26
-
27
- def countries
28
- Lob::V1::Country.new(self)
29
- end
30
-
31
- def jobs
32
- Lob::V1::Job.new(self)
33
- end
34
-
35
- def letters
36
- Lob::V1::Letter.new(self)
37
- end
38
-
39
- def objects
40
- Lob::V1::Object.new(self)
41
- end
42
-
43
- def postcards
44
- Lob::V1::Postcard.new(self)
45
- end
46
-
47
- def routes
48
- Lob::V1::Route.new(self)
49
- end
50
-
51
- def settings
52
- Lob::V1::Setting.new(self)
53
- end
54
-
55
- def states
56
- Lob::V1::State.new(self)
57
- end
58
-
59
- def base_url
60
- "#{@options[:protocol]}://#{@options[:api_key]}:@#{@options[:api_host]}/v1"
61
- end
62
-
63
- def construct_url(resource_type, resource_id=nil)
64
- "#{base_url}/#{resource_type}#{'/' + resource_id if resource_id}"
65
- end
66
-
67
- end
68
- end
69
- end