paperplane-rb 0.1.6 → 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: 8650245780e13bcc390fcc98d5628c523077cf443a8776563bfa95c528429397
4
- data.tar.gz: 000b39399abe1e6909f46f28f23d99bdfca7bdc7f2722ac5750311a901c96212
3
+ metadata.gz: ae47af520ac08251f5abda8c09e8cad0d12e2a2e0c8b1222fd0bcaf5d64e3213
4
+ data.tar.gz: 98676611ec96ca6613f868eeb7df4b9d27b93e5d3ca14a025aca7aaf876ee8f0
5
5
  SHA512:
6
- metadata.gz: a92b8cf658f491043a937359d0494e811219965fef14fcf9521d536f05e3b64f831b8ae5915f9a11611ff48a23f772c9696e7e3b8923914306a9a563739d12e5
7
- data.tar.gz: 9886f0011b89563d4b9ab7970e424006124cc033408f115b1ac1eaab822aeece9e682fc768a2070fbdc6a1b30f32e7a85967ad5644770cd2d512e10ecd7990e1
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.5)
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.6"
4
+ VERSION = "0.1.7"
5
5
  end
data/lib/paperplane.rb CHANGED
@@ -1,67 +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
- response = HTTP.basic_auth(user: self.api_key, pass: "").post(
33
- "https://download.paperplane.app",
34
- json: { url: url, page_size: page_size }
35
- )
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}")
36
40
  response.body.to_s
37
41
  end
38
42
 
39
- private
40
-
41
- def http_client
42
- @http_client ||= HTTP.basic_auth(user: api_key, pass: '')
43
- 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?
44
48
 
45
- def perform_request(method, endpoint_name, *args)
46
- url = build_url(endpoint_name, *args)
47
- puts url
48
- puts args
49
- response = http_client.request(method, url.to_s, json: args.to_json)
50
- puts response.parse
51
- validate_response!(response)
49
+ config.logger.info("Created job for URL: #{url}")
50
+ response.parse
52
51
  end
53
52
 
54
- def build_url(endpoint_name, *args)
55
- format(ENDPOINTS[endpoint_name], args)
56
- 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?
57
57
 
58
- def validate_response!(response)
59
- # raise Paperplane::Error, response.parse['message'] if response.status >= 400
58
+ config.logger.info("Fetched job: #{job_id}")
60
59
  response.parse
61
60
  end
62
-
63
- def validate_page_size!(page_size)
64
- raise ArgumentError, "Invalid page size '#{page_size}'" unless PAGE_SIZES.include?(page_size)
65
- end
66
61
  end
67
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.6
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