class FreckleIO::Connection
Public Instance Methods
get(path, params: {}, request_options: {})
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/freckle_io/connection.rb, line 10 def get(path, params: {}, request_options: {}) response = connection.get do |request| authorize_request(request) set_request_options(request, request_options) request.url path, params end response rescue Faraday::ConnectionFailed => e raise Errors::Connection::Failed.new(e), e.message rescue Faraday::ResourceNotFound => e raise Errors::Connection::ResourceNotFound.new(e), e.message rescue Faraday::ClientError => e raise Errors::Connection::ClientError.new(e), e.message end
get_in_parallel( path, from_page_number, to_page_number, params: {}, request_options: {} )
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/freckle_io/connection.rb, line 27 def get_in_parallel( path, from_page_number, to_page_number, params: {}, request_options: {} ) responses = [] connection.in_parallel(manager) do (from_page_number..to_page_number).each do |page| merged_params = {page: page}.merge(params) responses << get( path, params: merged_params, request_options: request_options ) end end responses end
Private Instance Methods
connection()
click to toggle source
# File lib/freckle_io/connection.rb, line 51 def connection @connection ||= Faraday.new(default_options) do |connection| connection.request :json connection.response :json, content_type: /\bjson$/ connection.response :raise_error connection.adapter :typhoeus end end
default_options()
click to toggle source
# File lib/freckle_io/connection.rb, line 60 def default_options { url: FreckleIO.configuration.url, headers: { user_agent: "MyFreckleBot/1.0" } } end
manager()
click to toggle source
# File lib/freckle_io/connection.rb, line 74 def manager @manager ||= Typhoeus::Hydra.new( max_concurrency: FreckleIO.configuration.max_concurrency ) end
set_request_options(request, options)
click to toggle source
# File lib/freckle_io/connection.rb, line 69 def set_request_options(request, options) request.options.timeout = options[:timeout] request.options.open_timeout = options[:open_timeout] end