class PDFire::Client

Attributes

api_key[R]
base_url[RW]
http[RW]

Public Class Methods

new(api_key) click to toggle source

@param api_key [String] the PDFire API key.

# File lib/client.rb, line 17
def initialize(api_key)
  @api_key = api_key
  @base_url = "https://api.pdfire.io"
  uri = URI.parse(@base_url)
  @http = Net::HTTP.new(uri.host, uri.port)
  @http.use_ssl = true
end

Public Instance Methods

cdn_result(response) click to toggle source
# File lib/client.rb, line 99
def cdn_result(response)
  body = JSON.parse(response.body)
  initialized_at = Date.iso8601 body['initializedAt']
  finished_at = nil

  if body['finished_at']
    finished_at = Date.iso8601 body['finishedAt']
  end

  result = nil

  if body['result']
    result = Conversion::Result.new (Date.iso8601 body['result']['expiresAt'] if body['result']['expiresAt'] else nil), body['result']['size'], body['result']['runtime'], body['result']['url']
  end

  conversion = Conversion.new initialized_at, finished_at, body['status'], body['error'], result
end
convert(params) click to toggle source

@param params [ConversionParams, MergeParams] the conversion/merge parameters. @return [Result] the conversion result.

# File lib/client.rb, line 27
def convert(params)
  map = params.to_map

  request = Net::HTTP::Post.new(@base_url + "/v1/conversions", initheader = {
    'Authorization': "Bearer #{@api_key}",
    'Content-Type': 'application/json',
  })

  request.body = map.to_json
  res = @http.request(request)
  status = res.code.to_i

  if status == 401
    raise UnauthorizedError
  end

  if status != 201
    content_type = res.header['content-type']

    if not content_type.include? 'application/json'
      raise RequestError
    end

    raise APIError.new JSON.parse(res.body)["errors"]
  end

  self.result(res)
end
convert_to_bytes(params) click to toggle source

@param params [ConversionParams, MergeParams] the conversion/merge parameters. @return [Array<byte>] the PDF bytes.

# File lib/client.rb, line 65
def convert_to_bytes(params)
  self.convert_to_bytes_result(params).bytes()
end
convert_to_bytes_result(params) click to toggle source

@param params [ConversionParams, MergeParams] the conversion/merge parameters. @return [BytesResult] the conversion result.

# File lib/client.rb, line 58
def convert_to_bytes_result(params)
  params.cdn = false
  self.convert params
end
convert_using_cdn(params) click to toggle source

@param params [ConversionParams, MergeParams] the conversion/merge parameters. @return [Conversion] the conversion.

# File lib/client.rb, line 71
def convert_using_cdn(params)
  params.cdn = true
  self.convert params
end
convert_using_storage(params, options = nil) click to toggle source

@param params [ConversionParams, MergeParams] the conversion/merge parameters. @param options [Hash] the storage options. @return [Conversion] the conversion.

# File lib/client.rb, line 79
def convert_using_storage(params, options = nil)
  if options != nil
    params.storage = options
  else
    params.storage = true
  end

  self.convert params
end
result(response) click to toggle source
# File lib/client.rb, line 89
def result(response)
  content_type = response.header['content-type']

  if content_type.include? 'application/json'
    return self.cdn_result(response)
  end

  BytesResult.new(response.body.bytes)
end