paperplane-rb 0.1.5 → 0.1.7

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: d34af93d01a325cd2e53b4a00719968d55ad3dd7ff0195ac4623eee955ff5a18
4
- data.tar.gz: bccd08c32516e578ecba63064cbb35893acfdc26f54e5c4177597e26c58a7caf
3
+ metadata.gz: ae47af520ac08251f5abda8c09e8cad0d12e2a2e0c8b1222fd0bcaf5d64e3213
4
+ data.tar.gz: 98676611ec96ca6613f868eeb7df4b9d27b93e5d3ca14a025aca7aaf876ee8f0
5
5
  SHA512:
6
- metadata.gz: e04dbf1dc294679b8052bcd4b6565773bb5b6162fdb1e31ff5bc39ace5854a2da119a5816233abf22516f6ff2f52cbf63f30a4b36d88cb44dac2f68102b75a7a
7
- data.tar.gz: 966410329cb1b4b485e9db453248f75b032469a206620152687926463358bfd427396ae6b9f98a85e982d6b577e6a514dadaf28b6d2e0f6daeef40a568e6027f
6
+ metadata.gz: 2fa065a06d16adc2fc54552096b084080e676b54d29cfcbf29ddd4a06d7a208733ce899345ed382a61f49397255da32a7b60070ee476334ae6d73419eb106aff
7
+ data.tar.gz: 4ac0be8e34fd9d890f9a46e264545851b2b627aff6f2956ac489d701c6911071084539f0e5d5921c47318c97b747ec156c0628cac3aed700e769d7f7237c1af4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- paperplane-rb (0.1.2)
4
+ paperplane-rb (0.1.6)
5
5
  http
6
6
 
7
7
  GEM
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ require 'logger'
3
+
4
+ class Config
5
+ attr_accessor :api_key, :logger
6
+
7
+ def initialize
8
+ @api_key = ''
9
+ @logger = Logger.new(STDOUT)
10
+ end
11
+ end
@@ -1,6 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Paperplane
4
- class Error < StandardError
4
+ class Error < StandardError
5
+ def initialize(message)
6
+ Paperplane.config.logger.error(message)
7
+ super(message)
8
+ end
5
9
  end
6
10
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Paperplane
4
- VERSION = "0.1.5"
4
+ VERSION = "0.1.7"
5
5
  end
data/lib/paperplane.rb CHANGED
@@ -1,65 +1,62 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'http'
4
+ require 'paperplane/config'
4
5
  require 'paperplane/error'
5
6
  require 'paperplane/version'
6
7
 
7
8
  module Paperplane
8
9
  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/'
10
+ download_pdf: 'https://download.paperplane.app/',
11
+ jobs: 'https://api.paperplane.app/jobs'
12
12
  }.freeze
13
- PAGE_SIZES = %w[Letter Legal A3 A4 A5].freeze
14
13
 
15
14
  class << self
16
- attr_accessor :api_key
15
+ attr_writer :config
16
+
17
+ def config
18
+ @config ||= Config.new
19
+ end
17
20
 
18
21
  def configure
19
- yield self
22
+ yield(config) if block_given?
20
23
  end
21
24
 
22
- def create_job(url, page_size: 'A4')
23
- validate_page_size!(page_size)
24
- perform_request(:post, :create_job, url: url, page_size: page_size)
25
+ def client
26
+ @client ||= HTTP.basic_auth(user: config.api_key, pass: '')
25
27
  end
26
28
 
27
- def show_job(id)
28
- perform_request(:get, :show_job, id)
29
+ def prepare_params(url, page_size: 'A4')
30
+ params = { url: url, page_size: page_size }
29
31
  end
30
32
 
33
+ # Download PDF
31
34
  def download_pdf(url, page_size: 'A4')
32
- validate_page_size!(page_size)
33
- perform_request(:post, :download_pdf, url: url, page_size: page_size)
35
+ params = prepare_params(url, page_size: page_size)
36
+ response = client.post(ENDPOINTS[:download_pdf], form: params)
37
+ raise Paperplane::Error, "Failed to download PDF: #{response.status}" unless response.status.success?
38
+
39
+ config.logger.info("Downloaded PDF: #{url}")
40
+ response.body.to_s
34
41
  end
35
42
 
36
- private
37
-
38
- def http_client
39
- @http_client ||= HTTP.basic_auth(user: api_key, pass: '')
40
- end
43
+ # Create Job
44
+ def create_job(url, page_size: 'A4', options: {})
45
+ params = prepare_params(url, page_size: page_size)
46
+ response = client.post(ENDPOINTS[:jobs], form: params.merge(options))
47
+ raise Paperplane::Error, "Failed to create job: #{response.status}" unless response.status.success?
41
48
 
42
- def perform_request(method, endpoint_name, **args)
43
- url = build_url(endpoint_name, **args)
44
- if endpoint_name == :download_pdf
45
- response = http_client.request(method, url, json: args, headers: { 'Content-Type' => 'application/pdf' })
46
- else
47
- response = http_client.request(method, url, json: args)
48
- end
49
- validate_response!(response)
49
+ config.logger.info("Created job for URL: #{url}")
50
+ response.parse
50
51
  end
51
52
 
52
- def build_url(endpoint_name, **args)
53
- format(ENDPOINTS[endpoint_name], **args)
54
- end
53
+ # Show Job
54
+ def show_job(job_id)
55
+ response = client.get("#{ENDPOINTS[:jobs]}/#{job_id}")
56
+ raise Paperplane::Error, "Failed to show job: #{response.status}" unless response.status.success?
55
57
 
56
- def validate_response!(response)
57
- # raise Paperplane::Error, response.parse['message'] if response.status >= 400
58
+ config.logger.info("Fetched job: #{job_id}")
58
59
  response.parse
59
60
  end
60
-
61
- def validate_page_size!(page_size)
62
- raise ArgumentError, "Invalid page size '#{page_size}'" unless PAGE_SIZES.include?(page_size)
63
- end
64
61
  end
65
62
  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.5
4
+ version: 0.1.7
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/config.rb
41
42
  - lib/paperplane/error.rb
42
43
  - lib/paperplane/version.rb
43
44
  - paperplane.gemspec