class Flexirest::Connection
Attributes
base_url[RW]
session[RW]
Public Class Methods
new(base_url)
click to toggle source
# File lib/flexirest/connection.rb, line 12 def initialize(base_url) @base_url = base_url @session = new_session end
Public Instance Methods
delete(path, data, options={})
click to toggle source
# File lib/flexirest/connection.rb, line 91 def delete(path, data, options={}) set_defaults(options) make_safe_request(path) do @session.delete(path) do |req| set_per_request_timeout(req, options) if options[:timeout] req.headers = req.headers.merge(options[:headers]) req.body = data sign_request(req, options[:api_auth]) end end end
get(path, options={})
click to toggle source
# File lib/flexirest/connection.rb, line 44 def get(path, options={}) set_defaults(options) make_safe_request(path) do @session.get(path) do |req| set_per_request_timeout(req, options) if options[:timeout] req.headers = req.headers.merge(options[:headers]) sign_request(req, options[:api_auth]) end end end
headers()
click to toggle source
# File lib/flexirest/connection.rb, line 21 def headers @session.headers end
make_safe_request(path, &block)
click to toggle source
# File lib/flexirest/connection.rb, line 25 def make_safe_request(path, &block) block.call rescue Faraday::TimeoutError raise Flexirest::TimeoutException.new("Timed out getting #{full_url(path)}") rescue Faraday::ConnectionFailed => e1 if e1.respond_to?(:cause) && e1.cause.is_a?(Net::OpenTimeout) raise Flexirest::TimeoutException.new("Timed out getting #{full_url(path)}") end begin reconnect block.call rescue Faraday::ConnectionFailed => e2 if e2.respond_to?(:cause) && e2.cause.is_a?(Net::OpenTimeout) raise Flexirest::TimeoutException.new("Timed out getting #{full_url(path)}") end raise Flexirest::ConnectionFailedException.new("Unable to connect to #{full_url(path)}") end end
patch(path, data, options={})
click to toggle source
# File lib/flexirest/connection.rb, line 67 def patch(path, data, options={}) set_defaults(options) make_safe_request(path) do @session.patch(path) do |req| set_per_request_timeout(req, options) if options[:timeout] req.headers = req.headers.merge(options[:headers]) req.body = data sign_request(req, options[:api_auth]) end end end
post(path, data, options={})
click to toggle source
# File lib/flexirest/connection.rb, line 79 def post(path, data, options={}) set_defaults(options) make_safe_request(path) do @session.post(path) do |req| set_per_request_timeout(req, options) if options[:timeout] req.headers = req.headers.merge(options[:headers]) req.body = data sign_request(req, options[:api_auth]) end end end
put(path, data, options={})
click to toggle source
# File lib/flexirest/connection.rb, line 55 def put(path, data, options={}) set_defaults(options) make_safe_request(path) do @session.put(path) do |req| set_per_request_timeout(req, options) if options[:timeout] req.headers = req.headers.merge(options[:headers]) req.body = data sign_request(req, options[:api_auth]) end end end
reconnect()
click to toggle source
# File lib/flexirest/connection.rb, line 17 def reconnect @session = new_session end
Private Instance Methods
full_url(path)
click to toggle source
# File lib/flexirest/connection.rb, line 114 def full_url(path) @session.build_url(path).to_s end
new_session()
click to toggle source
# File lib/flexirest/connection.rb, line 110 def new_session Faraday.new({url: @base_url}, &Flexirest::Base.faraday_config) end
set_defaults(options)
click to toggle source
# File lib/flexirest/connection.rb, line 118 def set_defaults(options) options[:headers] ||= {} options[:api_auth] ||= {} return options end
set_per_request_timeout(req, options)
click to toggle source
# File lib/flexirest/connection.rb, line 105 def set_per_request_timeout(req, options) req.options.timeout = options[:timeout].to_i req.options.open_timeout = options[:timeout].to_i end
sign_request(request, api_auth)
click to toggle source
# File lib/flexirest/connection.rb, line 124 def sign_request(request, api_auth) return if api_auth[:api_auth_access_id].nil? || api_auth[:api_auth_secret_key].nil? ApiAuth.sign!( request, api_auth[:api_auth_access_id], api_auth[:api_auth_secret_key], api_auth[:api_auth_options]) rescue ArgumentError if api_auth[:api_auth_options] && api_auth[:api_auth_options].keys.size > 0 Flexirest::Logger.warn("Specifying Api-Auth options isn't supported with your version of ApiAuth") end ApiAuth.sign!( request, api_auth[:api_auth_access_id], api_auth[:api_auth_secret_key]) end