Module: DirectApi::Request

Defined in:
lib/direct_api/request.rb

Overview

Yandex Direct request module

Constant Summary collapse

API_URI =
'https://api.direct.yandex.com/json/v5/'
SANDBOX_API_URI =
'https://api-sandbox.direct.yandex.com/json/v5/'

Class Method Summary collapse

Class Method Details

.build(path, params) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/direct_api/request.rb', line 31

def build(path, params)
  headers = {}
  path = get_uri(params.delete(:sandbox)) + path.to_s

  headers['Accept-Language'] = params.delete(:locale)
  headers['Client-Login'] = params.delete(:client_login)
  headers['Authorization'] = "Bearer #{params.delete(:token)}"

  [path, params.to_json, headers]
end

.get_uri(sandbox) ⇒ Object



42
43
44
# File 'lib/direct_api/request.rb', line 42

def get_uri(sandbox)
  sandbox ? SANDBOX_API_URI : API_URI
end

.make_request(path, params = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/direct_api/request.rb', line 18

def make_request(path, params = {})

  RestClient.post(*build(path, params))
rescue RestClient::Unauthorized,
       RestClient::Forbidden,
       RestClient::BadRequest,
       RestClient::ResourceNotFound => e
  raise DirectApi::RequestError, e.message
rescue SocketError => e
  raise DirectApi::ConnectionError, e.message

end

.process(path, params = {}) ⇒ Object



12
13
14
15
16
# File 'lib/direct_api/request.rb', line 12

def process(path, params = {})
  response_parser.parse(
    make_request(path, params).to_s
  )
end

.response_parserObject



46
47
48
# File 'lib/direct_api/request.rb', line 46

def response_parser
  Response
end