Module: Paperplane

Defined in:
lib/paperplane.rb,
lib/paperplane/error.rb,
lib/paperplane/version.rb

Defined Under Namespace

Classes: Error

Constant Summary collapse

ENDPOINTS =
{
  download_pdf: 'https://download.paperplane.app/',
  jobs: 'https://api.paperplane.app/jobs'
}.freeze
VERSION =
"0.1.8"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configObject



17
18
19
# File 'lib/paperplane.rb', line 17

def config
  @config ||= Config.new
end

Class Method Details

.clientObject



29
30
31
# File 'lib/paperplane.rb', line 29

def client
  @client ||= HTTP.basic_auth(user: config.api_key, pass: '')
end

.configure {|config| ... } ⇒ Object

Yields:



21
22
23
# File 'lib/paperplane.rb', line 21

def configure
  yield(config) if block_given?
end

.create_job(url, page_size: 'A4', options: {}) ⇒ Object

Create Job

Raises:



48
49
50
51
52
53
54
55
# File 'lib/paperplane.rb', line 48

def create_job(url, page_size: 'A4', options: {})
  params = prepare_params(url, page_size: page_size)
  response = client.post(ENDPOINTS[:jobs], form: params.merge(options))
  raise Paperplane::Error, "Failed to create job: #{response.status}" unless response.status.success?

  config.logger.info("Created job for URL: #{url}")
  response.parse
end

.download_pdf(url, page_size: 'A4') ⇒ Object

Download PDF

Raises:



38
39
40
41
42
43
44
45
# File 'lib/paperplane.rb', line 38

def download_pdf(url, page_size: 'A4')
  params = prepare_params(url, page_size: page_size)
  response = client.post(ENDPOINTS[:download_pdf], form: params)
  raise Paperplane::Error, "Failed to download PDF: #{response.status}" unless response.status.success?
  
  config.logger.info("Downloaded PDF: #{url}")
  response.body.to_s
end

.prepare_params(url, page_size: 'A4') ⇒ Object



33
34
35
# File 'lib/paperplane.rb', line 33

def prepare_params(url, page_size: 'A4')
  params = { url: url, page_size: page_size }
end

.show_job(job_id) ⇒ Object

Show Job

Raises:



58
59
60
61
62
63
64
# File 'lib/paperplane.rb', line 58

def show_job(job_id)
  response = client.get("#{ENDPOINTS[:jobs]}/#{job_id}")
  raise Paperplane::Error, "Failed to show job: #{response.status}" unless response.status.success?

  config.logger.info("Fetched job: #{job_id}")
  response.parse
end

.versionObject



25
26
27
# File 'lib/paperplane.rb', line 25

def version
  @version ||= Paperplane::VERSION
end