diff --git a/doc/permissions/permissions.md b/doc/permissions/permissions.md index 6be5ea0b48673a7c9b35cb36b5ad1c469986596c..30f6c75e1cfbe5b7bc75676496803a8b0bed194c 100644 --- a/doc/permissions/permissions.md +++ b/doc/permissions/permissions.md @@ -39,6 +39,7 @@ documentation](../workflow/add-user/add-user.md). | Cancel and retry builds | | | ✓ | ✓ | ✓ | | Create or update commit status | | | ✓ | ✓ | ✓ | | Update a container registry | | | ✓ | ✓ | ✓ | +| Remove a container registry images | | | ✓ | ✓ | ✓ | | Create new milestones | | | | ✓ | ✓ | | Add new team members | | | | ✓ | ✓ | | Push to protected branches | | | | ✓ | ✓ | diff --git a/lib/container_registry/blob.rb b/lib/container_registry/blob.rb index 16e3f85341859da17a8f132dd0894eac7bd2feec..d59792a383e4e3fbb175078bb86fca5ad0b015d5 100644 --- a/lib/container_registry/blob.rb +++ b/lib/container_registry/blob.rb @@ -44,7 +44,6 @@ module ContainerRegistry end def data - return @data if defined?(@data) @data ||= client.blob(repository.name, digest, type) end diff --git a/lib/container_registry/client.rb b/lib/container_registry/client.rb index b823428344bb82a2f239ace1ff6712f9b602f840..41d9cb46ae9a2b2d7ca29ede4820772141dc9595 100644 --- a/lib/container_registry/client.rb +++ b/lib/container_registry/client.rb @@ -9,20 +9,8 @@ module ContainerRegistry def initialize(base_uri, options = {}) @base_uri = base_uri - @faraday = Faraday.new(@base_uri) do |builder| - builder.request :json - builder.headers['Accept'] = MANIFEST_VERSION - - builder.response :json, :content_type => /\bjson$/ - builder.response :json, :content_type => 'application/vnd.docker.distribution.manifest.v1+prettyjws' - - if options[:user] && options[:password] - builder.request(:basic_auth, options[:user].to_s, options[:password].to_s) - elsif options[:token] - builder.request(:authorization, :bearer, options[:token].to_s) - end - - builder.adapter :net_http + @faraday = Faraday.new(@base_uri) do |conn| + initialize_connection(conn) end end @@ -60,5 +48,22 @@ module ContainerRegistry def delete_blob(name, digest) @faraday.delete("/v2/#{name}/blobs/#{digest}").success? end + + private + + def initialize_connection(conn) + conn.request :json + conn.headers['Accept'] = MANIFEST_VERSION + + conn.response :json, :content_type => /\bjson$/ + + if options[:user] && options[:password] + conn.request(:basic_auth, options[:user].to_s, options[:password].to_s) + elsif options[:token] + conn.request(:authorization, :bearer, options[:token].to_s) + end + + conn.adapter :net_http + end end end