Class: Ja::API

Inherits:
Object
  • Object
show all
Includes:
Methods
Defined in:
lib/ja/api.rb

Constant Summary collapse

LOG_LINE =
"%{verb} %{url} responded with %{status} %{reason}"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client: HTTP, url: nil, logger: Ja.logger, log_line: LOG_LINE) ⇒ API

Returns a new instance of API.



8
9
10
11
12
13
14
15
16
17
# File 'lib/ja/api.rb', line 8

def initialize(client:   HTTP,
               url:      nil,
               logger:   Ja.logger,
               log_line: LOG_LINE)

  @client = client
  @logger = logger
  @log_line = log_line
  @url = url
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



19
20
21
# File 'lib/ja/api.rb', line 19

def client
  @client
end

#log_lineObject (readonly)

Returns the value of attribute log_line.



19
20
21
# File 'lib/ja/api.rb', line 19

def log_line
  @log_line
end

#loggerObject (readonly)

Returns the value of attribute logger.



19
20
21
# File 'lib/ja/api.rb', line 19

def logger
  @logger
end

#urlObject (readonly)

Returns the value of attribute url.



19
20
21
# File 'lib/ja/api.rb', line 19

def url
  @url
end

Instance Method Details

#full_url(path) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/ja/api.rb', line 39

def full_url(path)
  if url
    File.join(url, path)
  else
    path
  end
end

#request(verb, uri, options = {}) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/ja/api.rb', line 21

def request(verb, uri, options = {})
  full_uri = full_url(uri)
  start_time = Time.now
  client_with_request_id = client.headers("X-Request-Id" => Thread.current[:request_id])
  response = client_with_request_id.request(verb, full_uri, options)
  log_response(response, start_time, verb, full_uri, options)
  response
end

#request!(verb, uri, options = {}) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/ja/api.rb', line 30

def request!(verb, uri, options = {})
  response = request(verb, uri, options)
  if (100..399).cover?(response.status)
    response
  else
    fail Error.to_exception(verb, full_url(uri), response)
  end
end