class MetricaApi::Request
Yandex Metrica request
Attributes
options[R]
params[R]
Public Class Methods
call(options, params = {})
click to toggle source
# File lib/metrica_api/request.rb, line 7 def self.call(options, params = {}) Request.new(options, params).call end
new(options, params = {})
click to toggle source
# File lib/metrica_api/request.rb, line 11 def initialize(options, params = {}) @options = options @params = params end
Public Instance Methods
call()
click to toggle source
# File lib/metrica_api/request.rb, line 16 def call execute!.tap do |response| if logger logger << full_url logger << response end end rescue RestClient::Unauthorized, RestClient::Forbidden, RestClient::BadRequest, RestClient::ResourceNotFound => e raise MetricaApi::RequestError, "url: #{full_url}, original: #{e.message}" rescue SocketError => e raise MetricaApi::ConnectionError, e.message end
Private Instance Methods
base_url()
click to toggle source
# File lib/metrica_api/request.rb, line 62 def base_url @_base_url ||= begin api_section = options[:api_section] version = options[:v] || DEFAULT_VERSION method = options[:method] format = options[:format] || DEFAULT_FORMAT "#{API_HOST}/#{api_section}/#{version}/#{method}.#{format}" end end
execute!()
click to toggle source
# File lib/metrica_api/request.rb, line 35 def execute! RestClient::Request.execute(rest_client_options) end
full_url()
click to toggle source
# File lib/metrica_api/request.rb, line 52 def full_url "#{base_url}?#{query}" end
logger()
click to toggle source
# File lib/metrica_api/request.rb, line 48 def logger MetricaApi.logger end
query()
click to toggle source
# File lib/metrica_api/request.rb, line 56 def query params.map do |key, value| [CGI.escape(key.to_s), '=', CGI.escape(value.to_s)] end.map(&:join).join('&') end
rest_client_options()
click to toggle source
# File lib/metrica_api/request.rb, line 39 def rest_client_options { method: :get, url: base_url, headers: { params: params, 'Authorization' => "OAuth #{options.fetch(:oauth_token)}" }, log: MetricaApi.logger }.compact end