Class: Scrutinizer::Ocular::ApiClient

Inherits:
Object
  • Object
show all
Defined in:
lib/scrutinizer/ocular/api_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_url, repository_name, revision, parents, access_token) ⇒ ApiClient

Returns a new instance of ApiClient.



17
18
19
20
21
22
23
24
25
26
# File 'lib/scrutinizer/ocular/api_client.rb', line 17

def initialize(api_url, repository_name, revision, parents, access_token)
  @api_url = api_url
  @repository_name = repository_name
  @revision = revision
  @parents = parents
  @access_token = access_token
  @http = create_http_service(@api_url)

  disable_net_blockers!
end

Instance Method Details

#upload(format, data) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/scrutinizer/ocular/api_client.rb', line 28

def upload(format, data)
  uri_str = @api_url + '/repositories/' + @repository_name + '/data/code-coverage'
  unless @access_token.nil?
    uri_str += '?access_token=' + @access_token
  end
  uri = URI.parse(uri_str)

  request = Net::HTTP::Post.new(uri.request_uri)
  request.add_field('Content-Type', 'application/json')
  request.body = {
      :revision => @revision,
      :parents => @parents,
      :coverage => {
          :format => format,
          :data => Base64.encode64(data)
      }
  }.to_json

  response = @http.request(request)

  if response.code.to_i < 200 || response.code.to_i >= 300
    raise UploadFailed.new(response), "Upload failed with status #{response.code}"
  end
end