class Pdfmonkey::Adapter

Attributes

config[R]

Public Class Methods

new(config: Pdfmonkey.configuration) click to toggle source
# File lib/pdfmonkey/adapter.rb, line 7
def initialize(config: Pdfmonkey.configuration)
  @config = config
end

Public Instance Methods

call(method, resource) click to toggle source
# File lib/pdfmonkey/adapter.rb, line 11
def call(method, resource)
  response = send_request(method, resource)

  case response
  when Net::HTTPNoContent then true
  when Net::HTTPSuccess then extract_attributes(response, resource)
  else extract_errors(response)
  end
rescue StandardError => e
  { errors: [e.message], status: 'error' }
end

Private Instance Methods

build_delete_request(uri, _resource) click to toggle source
# File lib/pdfmonkey/adapter.rb, line 23
        def build_delete_request(uri, _resource)
  Net::HTTP::Delete.new(uri, headers)
end
build_get_request(uri, _resource) click to toggle source
# File lib/pdfmonkey/adapter.rb, line 27
        def build_get_request(uri, _resource)
  Net::HTTP::Get.new(uri, headers)
end
build_post_request(uri, resource) click to toggle source
# File lib/pdfmonkey/adapter.rb, line 31
        def build_post_request(uri, resource)
  request = Net::HTTP::Post.new(uri, headers)
  request.body = resource.to_json
  request
end
extract_attributes(response, resource) click to toggle source
# File lib/pdfmonkey/adapter.rb, line 37
        def extract_attributes(response, resource)
  member = resource.class.const_get('MEMBER')
  JSON.parse(response.body).fetch(member)
end
extract_errors(response) click to toggle source
# File lib/pdfmonkey/adapter.rb, line 42
        def extract_errors(response)
  payload = JSON.parse(response.body)
  errors = payload['errors'].to_a.map { |error| error['detail'] }

  { errors: errors, status: 'error' }
end
headers() click to toggle source
# File lib/pdfmonkey/adapter.rb, line 49
        def headers
  {
    'Authorization' => "Bearer #{config.private_key}",
    'Content-Type' => 'application/json',
    'User-Agent' => 'Ruby'
  }
end
send_request(method, resource) click to toggle source
# File lib/pdfmonkey/adapter.rb, line 57
        def send_request(method, resource)
  uri = URI(url_for(resource))
  request = send("build_#{method}_request", uri, resource)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = (uri.scheme == 'https')
  http.request(request)
end
url_for(resource) click to toggle source
# File lib/pdfmonkey/adapter.rb, line 65
        def url_for(resource)
  collection = resource.class.const_get('COLLECTION')
  endpoint = "#{config.host}/#{config.namespace}/#{collection}"
  endpoint += "/#{resource.id}" if resource.id
  endpoint
end