Class: TransparenciaBrasil::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/transparencia_brasil/client.rb

Direct Known Subclasses

Excelencia

Class Method Summary collapse

Class Method Details

.connection_builder(method, url, params) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/transparencia_brasil/client.rb', line 48

def connection_builder(method, url, params)
  request_setup = Proc.new { |config|
    config.verbose = ENV['DEBUG']
    config.headers['App-Token'] = token
    config.ssl_verify_peer = false
  }

  connection = case method
               when :get
                 url.query = params.to_query unless params.empty?
                 Curl.http :GET, url, nil, nil, &request_setup
               else
                 raise "No support method #{method}"
               end

end

.endpoint_urlObject



8
9
10
# File 'lib/transparencia_brasil/client.rb', line 8

def endpoint_url
  Addressable::URI.parse(TransparenciaBrasil.configuration.endpoint)
end

.get_entity(klass, path, params = {}) ⇒ Object



16
17
18
# File 'lib/transparencia_brasil/client.rb', line 16

def get_entity(klass, path, params = {})
  objects_from_response(klass, request(:get, path, params))
end

.objects_from_response(klass, response) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/transparencia_brasil/client.rb', line 20

def objects_from_response(klass, response)
  result = JSON.parse(response.body_str, symbolize_names: true)
  if result.is_a?(Array)
    result.map { |body| klass.new body }
  else
    klass.new(result)
  end
end

.request(method, path, params = {}, signature_params = params) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/transparencia_brasil/client.rb', line 29

def request(method, path, params={}, signature_params=params)
  url = endpoint_url.join("/api/"+path)

  connection = connection_builder(method, url, params)
  #case connection.response_code
  #when 400; raise TransparenciaBrasil::Error::BadRequest, ""
  #when 401; raise TransparenciaBrasil::Error::Unauthorized, ""
  #when 404; raise TransparenciaBrasil::Error::Unauthorized, ""
  #when 413; raise TransparenciaBrasil::Error::Unauthorized, ""
  #when 422; raise TransparenciaBrasil::Error::Unauthorized, ""
  #when 429; raise TransparenciaBrasil::Error::Unauthorized, ""
  #when 500; raise TransparenciaBrasil::Error::Unauthorized, ""
  #end

  connection
rescue Curl::Err::ConnectionFailedError
  raise TransparenciaBrasil::Error::ServerError, ""
end

.tokenObject



12
13
14
# File 'lib/transparencia_brasil/client.rb', line 12

def token
  TransparenciaBrasil.configuration.token
end