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