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