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