paperplane-rb 0.1.0 → 0.1.2

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
  SHA256:
3
- metadata.gz: 9ef3026a3b88856233f3e9d4cfea8f165f126bd240de7808dfba2e205baba9e0
4
- data.tar.gz: 6702fe14e39f56d4060a505de5505835acc10cfd4a3a823844ac9f2d1c90af5a
3
+ metadata.gz: 216ad609eb4aa80ba633c6af0270247f06a3a7aadb31d1dba4116a4743900fad
4
+ data.tar.gz: 330a5531e6e00d4f3bf6b684e213080baefd551d5c22a4080051822b4d03991f
5
5
  SHA512:
6
- metadata.gz: 40dff58c30f2d294a8d05d689420be03a0177c3c53c4a224be5b70d9e575db4ceaa19202dff5848b0bb177d49e1b427288f473916f0e02cb69167c5cf30786ac
7
- data.tar.gz: c979966d45b8b0ae4c1ea48bf6706bb41ba0347329ebe668b9beb806a7cad23245e67d65fecb61b7bf9d2a4d3aa7bf5e58f96a73d7124daf857d8d065fb2e7b7
6
+ metadata.gz: 958a75139c95cbc601e75c65b413eeaf3b03a45a93248e6c64eb7c605be077df0fc39c32ddd7ade0a1403d9df027245eb1887392c548844cea570a274c9983c8
7
+ data.tar.gz: e134597e1fe1f1eef9737ab7f20877941c56c8c5c1b366461710f037e7f6364272640a7b838ca90aac98b910c3c222106b7a5e7176772923bb7906e2c9fddb49
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Paperplane
4
+ class Error < StandardError
5
+ end
6
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Paperplane
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/paperplane.rb CHANGED
@@ -1,59 +1,60 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "paperplane/version"
4
3
  require 'http'
4
+ require 'paperplane/error'
5
+ require 'paperplane/version'
5
6
 
6
7
  module Paperplane
7
- class Error < StandardError; end
8
+ ENDPOINTS = {
9
+ create_job: 'https://api.paperplane.app/v1/jobs',
10
+ show_job: 'https://api.paperplane.app/v1/jobs/%{id}',
11
+ download_pdf: 'https://download.paperplane.app/'
12
+ }.freeze
13
+ PAGE_SIZES = %w[Letter Legal A3 A4 A5].freeze
8
14
 
9
15
  class << self
10
- BASE_URL = 'https://api.paperplane.app/v1'.freeze
11
- ENDPOINTS = {
12
- create_job: '/jobs',
13
- show_job: '/jobs/%{id}',
14
- download_pdf: 'https://download.paperplane.app/'
15
- }.freeze
16
- PAGE_SIZES = %w[A4 Letter Legal Tabloid].freeze
17
-
18
16
  attr_accessor :api_key
19
17
 
20
- def create_job(url, page_size = 'A4')
21
- validate_page_size(page_size)
22
- perform_request(:post, :create_job, url, page_size:)
18
+ def configure
19
+ yield self
20
+ end
21
+
22
+ def create_job(url, page_size: 'A4')
23
+ validate_page_size!(page_size)
24
+ perform_request(:post, :create_job, url, page_size: page_size)
23
25
  end
24
26
 
25
27
  def show_job(id)
26
28
  perform_request(:get, :show_job, id)
27
29
  end
28
30
 
29
- def download_pdf(url, page_size = 'A4')
30
- validate_page_size(page_size)
31
- perform_request(:post, :download_pdf, url, page_size:)
31
+ def download_pdf(url, page_size: 'A4')
32
+ validate_page_size!(page_size)
33
+ "#{ENDPOINTS[:download_pdf]}#{url}?page_size=#{page_size}"
32
34
  end
33
35
 
34
36
  private
35
37
 
36
38
  def http_client
37
- @http_client ||= HTTP.basic_auth(user: @api_key, pass: '')
39
+ @http_client ||= HTTP.basic_auth(user: api_key, pass: '')
38
40
  end
39
41
 
40
- def perform_request(method, endpoint_name, *args)
41
- url = build_url(endpoint_name, args[0])
42
- response = http_client.request(method, url, json: args[1])
43
- handle_error(response)
44
- response.parse
42
+ def perform_request(method, endpoint_name, **args)
43
+ url = build_url(endpoint_name, **args)
44
+ response = http_client.request(method, url, json: args)
45
+ validate_response!(response)
45
46
  end
46
47
 
47
- def build_url(endpoint_name, id)
48
- endpoint = ENDPOINTS[endpoint_name]
49
- endpoint.include?('://') ? endpoint : "#{BASE_URL}#{format(endpoint, id:)}"
48
+ def build_url(endpoint_name, **args)
49
+ format(ENDPOINTS[endpoint_name], **args)
50
50
  end
51
51
 
52
- def handle_error(response)
52
+ def validate_response!(response)
53
53
  raise Paperplane::Error, response.parse['message'] if response.status >= 400
54
+ response.parse
54
55
  end
55
56
 
56
- def validate_page_size(page_size)
57
+ def validate_page_size!(page_size)
57
58
  raise ArgumentError, "Invalid page size '#{page_size}'" unless PAGE_SIZES.include?(page_size)
58
59
  end
59
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperplane-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - nolyoi
@@ -38,6 +38,7 @@ files:
38
38
  - README.md
39
39
  - Rakefile
40
40
  - lib/paperplane.rb
41
+ - lib/paperplane/error.rb
41
42
  - lib/paperplane/version.rb
42
43
  - paperplane.gemspec
43
44
  - sig/paperplane.rbs