paperplane-rb 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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