class YandexDirect::V5::Request

Constants

BASE_URL
SANDBOX_BASE_URL

Public Class Methods

new(client, token, service_name, method, params) click to toggle source
# File lib/yandex_direct/v5/request.rb, line 9
def initialize(client, token, service_name, method, params)
  @payload = { method: method, params: params }
  api_url = client.test ? SANDBOX_BASE_URL : BASE_URL
  @url = "#{api_url}#{service_name}"
  @token = token
end

Public Instance Methods

perform() click to toggle source
# File lib/yandex_direct/v5/request.rb, line 16
def perform
  response = HTTP.auth("Bearer #{@token}").headers('Accept-Language': 'ru').post(@url, json: @payload)
  response_body = response.parse

  raise(YandexDirect::NotEnoughUnitsError) if response_body.key?('error') && response_body['error']['error_code'].to_i == 152
  raise(YandexDirect::Error, "[#{response_body['error']['error_code']}] #{response_body['error']['error_string']}: #{response_body['error']['error_detail']}") if response_body.key?('error')

  { result: response_body['result'], available_units: response['Units'].split('/')[1] }
end