class Europeana::API::Request
An API
request
Attributes
api_url[R]
body[R]
client[W]
endpoint[R]
headers[R]
params[R]
Public Class Methods
new(endpoint, params = {})
click to toggle source
@param endpoint [Hash] endpoint options @param params [Hash]
# File lib/europeana/api/request.rb, line 17 def initialize(endpoint, params = {}) @endpoint = endpoint @params = params.dup extract_special_params end
Public Instance Methods
client()
click to toggle source
# File lib/europeana/api/request.rb, line 37 def client @client ||= Client.new end
execute(&block)
click to toggle source
@return [Response]
# File lib/europeana/api/request.rb, line 25 def execute(&block) response = Response.new(self, faraday_response(&block)) return response if client.in_parallel? response.validate! response.body end
url()
click to toggle source
# File lib/europeana/api/request.rb, line 33 def url build_api_url(format_params) end
Protected Instance Methods
build_api_url(params = {})
click to toggle source
# File lib/europeana/api/request.rb, line 80 def build_api_url(params = {}) request_path = format(endpoint[:path], params) if api_url.nil? request_path.sub(%r{\A/}, '') # remove leading slash for relative URLs else api_url + request_path end end
endpoint_path_format_keys()
click to toggle source
# File lib/europeana/api/request.rb, line 76 def endpoint_path_format_keys @endpoint_path_format_keys ||= endpoint[:path].scan(/%\{(.*?)\}/).flatten.map(&:to_sym) end
extract_special_params()
click to toggle source
# File lib/europeana/api/request.rb, line 43 def extract_special_params @api_url = @params.delete(:api_url) @headers = @params.delete(:headers) @body = @params.delete(:body) unless http_method == :get end
faraday_response() { |request| ... }
click to toggle source
# File lib/europeana/api/request.rb, line 49 def faraday_response client.send(http_method) do |request| request.url(url) request.params = query_params request.headers.merge!(endpoint[:headers] || {}).merge!(headers || {}) request.body = body unless http_method == :get yield(request) if block_given? # logger.debug("API request: #{request.inspect}") end end
format_params()
click to toggle source
# File lib/europeana/api/request.rb, line 68 def format_params params.slice(*endpoint_path_format_keys) end
http_method()
click to toggle source
# File lib/europeana/api/request.rb, line 64 def http_method endpoint[:method] || :get end
logger()
click to toggle source
# File lib/europeana/api/request.rb, line 60 def logger Europeana::API.logger end
query_params()
click to toggle source
# File lib/europeana/api/request.rb, line 72 def query_params params.except(*endpoint_path_format_keys) end