class Fme::Api::Request

Attributes

debug[RW]
host[RW]
jwt[RW]

Public Class Methods

protocol() click to toggle source
# File lib/fme/api/request.rb, line 9
def self.protocol
  if Rails.env.development?
    'http://'
  else
    'https://'
  end
end

Public Instance Methods

healthy?() click to toggle source
# File lib/fme/api/request.rb, line 28
def healthy?
  connection.get(service_url('/okcomputer/all.json')).body.dig('default', 'success')
end
http_cache_options() click to toggle source
# File lib/fme/api/request.rb, line 17
def http_cache_options
  http_cache_options = {
    shared_cache: false,
    store: Rails.cache
  }
  if debug
    http_cache_options[:logger] = Rails.logger
  end
  http_cache_options
end

Private Instance Methods

connection() click to toggle source
# File lib/fme/api/request.rb, line 34
def connection
  @connection ||= Faraday.new(url: "#{self.class.protocol}#{host}") do |builder|
    setup_connection(builder)
  end
end
setup_connection(builder) click to toggle source
# File lib/fme/api/request.rb, line 40
def setup_connection(builder)
  builder.options[:open_timeout] = 2
  builder.options[:timeout] = 5
  builder.authorization :Bearer, jwt
  builder.request :json
  builder.request :url_encoded
  builder.request :retry, max: 5, interval: 0.05, interval_randomness: 0.5, backoff_factor: 2
  builder.use FaradayCacheServiceDown, Rails.cache
  builder.use :http_cache, http_cache_options
  builder.use FaradayFollowNextLinks, 5
  builder.response :json, content_type: /\bjson$/
  builder.response :raise_error
  builder.response :logger if debug
  builder.adapter Faraday.default_adapter
end