Class: Pdfserve::Merge

Inherits:
Object
  • Object
show all
Defined in:
lib/pdfserve/merge.rb

Constant Summary collapse

PATH =
'/api/v1/pdf/merge'

Instance Method Summary collapse

Constructor Details

#initialize(api_endpoint:, api_token: nil) ⇒ Merge

Returns a new instance of Merge.



15
16
17
18
# File 'lib/pdfserve/merge.rb', line 15

def initialize(api_endpoint:, api_token: nil)
  @api_endpoint = api_endpoint + PATH
  @api_token = api_token
end

Instance Method Details

#merge(file_urls, output_path, rotations: nil) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/pdfserve/merge.rb', line 20

def merge(file_urls, output_path, rotations: nil)
  uri = URI(api_endpoint)
  uri.query = URI.encode_www_form(rotations.map { |angle| ['rotations', angle] }) if rotations && !rotations.empty?
  request = Net::HTTP::Post.new(uri)
  request['token'] = api_token unless api_token.nil?
  form_data = file_urls.map { |url| ['files', url] }

  request.set_form form_data, 'multipart/form-data'

  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
    http.request(request)
  end

  if response.is_a?(Net::HTTPSuccess)
    File.binwrite(output_path, response.body)
    puts 'Success!'
    OpenStruct.new(success: true, errors: '')
  else
    puts 'Failed!'
    OpenStruct.new(success: false, errors: response.message)
  end
end