module Filepreviews::HTTP
@author Jonah Ruiz <jonah@pixelhipsters.com> Contains http helper module
Constants
- BASE_URL
- USER_AGENT
Public Instance Methods
Returns API Keys status @return [Boolean] for when API keys are configured
# File lib/filepreviews/http.rb, line 34 def api_keys? !!(Filepreviews.api_key && Filepreviews.secret_key) end
Configures API Authentication header @param connection_headers [Faraday::Connection] header block @return [Faraday::Connection] 'Authorization' header
# File lib/filepreviews/http.rb, line 48 def configure_api_auth_header(connection_headers) if api_keys? connection_headers['Authorization'] = generate_auth_key end end
Configures logger @param connection [Faraday::Connection] connection block
# File lib/filepreviews/http.rb, line 56 def configure_logger(connection) connection.response :logger end
Returns custom Typhoeus connection configuration @param url [String] API url to be used as base @param debug [Boolean] flag to log responses into STDOUT @return [Typhoeus::Connection] configured http client for requests to API
# File lib/filepreviews/http.rb, line 22 def default_connection(url = BASE_URL, debug = false) Faraday.new(url: url) do |conn| conn.adapter :typhoeus conn.headers[:user_agent] = USER_AGENT conn.headers[:content_type] = 'application/json' configure_api_auth_header(conn.headers) configure_logger(conn) if debug end end
Returns parsed response from API @return [Filepreviews::Response] json response as callable methods
# File lib/filepreviews/http.rb, line 76 def fetch(params, endpoint_path = 'previews') options = prepare_request(params) response = default_connection(BASE_URL, params.debug) .post do |req| req.url("/v2/#{endpoint_path}/") req.body = JSON.generate(options) end parse(response.body) end
Returns callable methods from parsed JSON response @param response_body [String<JSON>] stringified version of json response @return [Filepreviews::Response] json response as callable methods
# File lib/filepreviews/http.rb, line 90 def parse(response_body) Filepreviews::Response.new(JSON.parse(response_body)) end
Returns processed metadata, and image attributes params @param params [Hash<Symbol>] metadata and image attributes @return [Hash<Symbol>] processed parameters
# File lib/filepreviews/http.rb, line 63 def prepare_request(params) request = process_params(params) request.store(:sizes, [extract_size(params.size)]) if params.size request.store(:format, params.format) if params.format request.store(:data, params.data) if params.data request.store(:uploader, params.uploader) if params.uploader request.store(:pages, params.pages) if params.pages request.store(:callback_url, params.callback_url) if params.callback_url request end