Class: UnofficialBuildkiteClient::JsonApiClient

Inherits:
Object
  • Object
show all
Defined in:
lib/unofficial_buildkite_client/json_api_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(authorization_header: nil, logger:) ⇒ JsonApiClient

Returns a new instance of JsonApiClient.



7
8
9
10
# File 'lib/unofficial_buildkite_client/json_api_client.rb', line 7

def initialize(authorization_header: nil, logger:)
  @authorization_header = authorization_header
  @logger = logger
end

Instance Method Details

#request(method, url, params: nil) ⇒ Object

Raises:



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/unofficial_buildkite_client/json_api_client.rb', line 12

def request(method, url, params: nil)
  uri = URI.parse(url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  logger.info("method: #{method}, url: #{url}, params: #{params.inspect}")

  request =
  case method
  when :get
    uri.query = URI.encode_www_form(params) if params
    Net::HTTP::Get.new(uri.request_uri)
  when :post
    Net::HTTP::Post.new(uri.request_uri).tap do |req|
      req.body = params.to_json if params
    end
  else
    raise NotImplementedError
  end

  json_headers.each do |k, v|
    request[k] = v
  end
  response = http.request(request)
  raise Error.new("#{response.inspect}") unless response.code.start_with?("2")
  JSON.parse(response.body, symbolize_names: true)
end