summaryrefslogtreecommitdiff
path: root/lib/registry_client.rb
blob: 87518a7b39cf6f392f7a10e527b611011695b336 (plain)
1
2
3
4
5
6
7
8
9
10
11
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
require 'HTTParty'

class RegistryClient
  attr_accessor :uri

  def initialize(uri)
    @uri = uri
  end

  def tags(name)
    response = HTTParty.get("#{uri}/v2/#{name}/tags/list")
    response.parsed_response['tags']
  end

  def tag(name, reference)
    response = HTTParty.get("#{uri}/v2/#{name}/manifests/#{reference}")
    JSON.parse(response)
  end

  def tag_digest(name, reference)
    response = HTTParty.head("#{uri}/v2/#{name}/manifests/#{reference}")
    response.headers['docker-content-digest'].split(':')
  end

  def delete_tag(name, reference)
    response = HTTParty.delete("#{uri}/v2/#{name}/manifests/#{reference}")
    response.parsed_response
  end

  def blob_size(name, digest)
    response = HTTParty.head("#{uri}/v2/#{name}/blobs/#{digest}")
    response.headers.content_length
  end

  def delete_blob(name, digest)
    HTTParty.delete("#{uri}/v2/#{name}/blobs/#{digest}")
  end
end