Module: Filepreviews::HTTP
- Includes:
- Utils
- Defined in:
- lib/filepreviews/http.rb
Overview
Contains http helper module
Constant Summary collapse
- BASE_URL =
'https://api.filepreviews.io'
- USER_AGENT =
"Filepreviews-Rubygem/#{Filepreviews::VERSION}"
Class Method Summary collapse
-
.api_keys? ⇒ Boolean
Returns API Keys status.
-
.configure_api_auth_header(connection_headers) ⇒ Faraday::Connection
Configures API Authentication header.
-
.configure_logger(connection) ⇒ Object
Configures logger.
-
.default_connection(url = BASE_URL, debug = false) ⇒ Typhoeus::Connection
Returns custom Typhoeus connection configuration.
-
.fetch(params, endpoint_path = 'previews') ⇒ Filepreviews::Response
Returns parsed response from API.
-
.generate_auth_key ⇒ String
Configures API HTTP Basic Authentication.
-
.parse(response_body) ⇒ Filepreviews::Response
Returns callable methods from parsed JSON response.
-
.prepare_request(params) ⇒ Hash<Symbol>
Returns processed metadata, and image attributes params.
Methods included from Utils
#extract_metadata, #extract_size, included, #process_params, #validate_pages
Class Method Details
.api_keys? ⇒ Boolean
Returns API Keys status
34 35 36 |
# File 'lib/filepreviews/http.rb', line 34 def api_keys? !!(Filepreviews.api_key && Filepreviews.secret_key) end |
.configure_api_auth_header(connection_headers) ⇒ Faraday::Connection
Configures API Authentication header
48 49 50 51 52 |
# 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 |
.configure_logger(connection) ⇒ Object
Configures logger
56 57 58 |
# File 'lib/filepreviews/http.rb', line 56 def configure_logger(connection) connection.response :logger end |
.default_connection(url = BASE_URL, debug = false) ⇒ Typhoeus::Connection
Returns custom Typhoeus connection configuration
22 23 24 25 26 27 28 29 30 |
# 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 |
.fetch(params, endpoint_path = 'previews') ⇒ Filepreviews::Response
Returns parsed response from API
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/filepreviews/http.rb', line 76 def fetch(params, endpoint_path = 'previews') = prepare_request(params) response = default_connection(BASE_URL, params.debug) .post do |req| req.url("/v2/#{endpoint_path}/") req.body = JSON.generate() end parse(response.body) end |
.generate_auth_key ⇒ String
Configures API HTTP Basic Authentication
40 41 42 43 |
# File 'lib/filepreviews/http.rb', line 40 def generate_auth_key key = Base64.encode64("#{Filepreviews.api_key}:#{Filepreviews.secret_key}").gsub(/\n/, '') "Basic #{key}" end |
.parse(response_body) ⇒ Filepreviews::Response
Returns callable methods from parsed JSON response
90 91 92 |
# File 'lib/filepreviews/http.rb', line 90 def parse(response_body) Filepreviews::Response.new(JSON.parse(response_body)) end |
.prepare_request(params) ⇒ Hash<Symbol>
Returns processed metadata, and image attributes params
63 64 65 66 67 68 69 70 71 72 |
# 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 |