From 86c7831cd8698a7ab1d58841c57be40adf09ddbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=91=D0=BE=D1=80=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Sun, 1 Mar 2026 17:07:20 +0200 Subject: [PATCH] working commit --- authbas.go | 2 +- blobexist.go | 2 +- client.go | 2 +- client_test.go | 2 +- copyctx.go | 2 +- copyctx_test.go | 2 +- delman.go | 2 +- digest.go | 2 +- getblob.go | 2 +- getman.go | 2 +- getupload.go | 2 +- go.mod | 6 +++- go.sum | 6 ++++ manexist.go | 2 +- mimetyp.go | 2 +- pathupload.go | 2 +- putman.go | 2 +- putupload.go | 2 +- referer.go | 95 ------------------------------------------------- 19 files changed, 27 insertions(+), 112 deletions(-) delete mode 100644 referer.go diff --git a/authbas.go b/authbas.go index 705eee9..1b555eb 100644 --- a/authbas.go +++ b/authbas.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "encoding/base64" diff --git a/blobexist.go b/blobexist.go index 1656680..3f4ab09 100644 --- a/blobexist.go +++ b/blobexist.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "context" diff --git a/client.go b/client.go index 70f792c..404fece 100644 --- a/client.go +++ b/client.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "crypto/tls" diff --git a/client_test.go b/client_test.go index 00f4fe2..af759ee 100644 --- a/client_test.go +++ b/client_test.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "github.com/stretchr/testify/require" diff --git a/copyctx.go b/copyctx.go index 0dc3091..b9a8acf 100644 --- a/copyctx.go +++ b/copyctx.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "context" diff --git a/copyctx_test.go b/copyctx_test.go index f289cc1..b6c991e 100644 --- a/copyctx_test.go +++ b/copyctx_test.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "github.com/stretchr/testify/require" diff --git a/delman.go b/delman.go index 979666d..0050a8f 100644 --- a/delman.go +++ b/delman.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "context" diff --git a/digest.go b/digest.go index 8874348..2eab175 100644 --- a/digest.go +++ b/digest.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "crypto/sha256" diff --git a/getblob.go b/getblob.go index 9d6617e..ee92aab 100644 --- a/getblob.go +++ b/getblob.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "context" diff --git a/getman.go b/getman.go index 89fdfba..ba727b6 100644 --- a/getman.go +++ b/getman.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "bytes" diff --git a/getupload.go b/getupload.go index 05634d5..e4c3cd6 100644 --- a/getupload.go +++ b/getupload.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "context" diff --git a/go.mod b/go.mod index e473a6b..e1c0b83 100644 --- a/go.mod +++ b/go.mod @@ -2,10 +2,14 @@ module client go 1.25.0 -require github.com/stretchr/testify v1.11.1 +require ( + github.com/opencontainers/image-spec v1.1.0 + github.com/stretchr/testify v1.11.1 +) require ( github.com/davecgh/go-spew v1.1.1 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index c4c1710..e4da8cc 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,11 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= diff --git a/manexist.go b/manexist.go index 25d2a23..f4855ac 100644 --- a/manexist.go +++ b/manexist.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "context" diff --git a/mimetyp.go b/mimetyp.go index 4f84603..c5da23f 100644 --- a/mimetyp.go +++ b/mimetyp.go @@ -1,4 +1,4 @@ -package client +package repocli const ( MediaTypeDDMLv2 = "application/vnd.docker.distribution.manifest.list.v2+json" diff --git a/pathupload.go b/pathupload.go index 11238cd..f1bc1b6 100644 --- a/pathupload.go +++ b/pathupload.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "context" diff --git a/putman.go b/putman.go index 8d1e73a..e199cc2 100644 --- a/putman.go +++ b/putman.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "bytes" diff --git a/putupload.go b/putupload.go index 0e6768a..31065ab 100644 --- a/putupload.go +++ b/putupload.go @@ -1,4 +1,4 @@ -package client +package repocli import ( "context" diff --git a/referer.go b/referer.go deleted file mode 100644 index 43bf861..0000000 --- a/referer.go +++ /dev/null @@ -1,95 +0,0 @@ -package client - -import ( - "net/url" - "strings" -) - -type Repository struct { - urlobj *url.URL - user, pass string - base string -} - -func NewRepository(rawrepo string) (*Repository, error) { - repo := &Repository{} - if !strings.Contains(rawrepo, "://") { - rawrepo = "https://" + rawrepo - } - urlobj, err := url.Parse(rawrepo) - if err != nil { - return repo, err - } - if urlobj.User != nil { - repo.user = urlobj.User.Username() - repo.pass, _ = urlobj.User.Password() - urlobj.User = nil - } - repo.urlobj = urlobj - repo.base = repo.urlobj.Path - repo.urlobj.Path = "/" - repo.urlobj = urlobj - - return repo, err -} - -func (repo *Repository) Manifest(tag string) string { - curl := repo.urlobj.JoinPath("/v2", repo.base, "/manifests", tag) - return curl.String() -} - -func (repo *Repository) Blob(digest string) string { - curl := repo.urlobj.JoinPath("/v2", repo.base, "/blobs", digest) - return curl.String() -} - -func (repo *Repository) Upload() string { - curl := repo.urlobj.JoinPath("/v2", repo.base, "/blobs/uploads/") - return curl.String() -} - -func (repo *Repository) Patch(loc string) (string, error) { - var curl *url.URL - var out string - var err error - if isUUID(loc) { - curl = repo.urlobj.JoinPath("/v2/", repo.base, "/blobs/uploads/", loc) - return curl.String(), nil - } - if strings.Contains(loc, "://") { - curl, err = url.Parse(loc) - if err != nil { - return out, err - } - } else { - curl = repo.urlobj.JoinPath(loc) - } - out = curl.String() - return out, err -} - -func (repo *Repository) Put(loc, digest string) (string, error) { - var curl *url.URL - var out string - var err error - - if isUUID(loc) { - curl = repo.urlobj.JoinPath("/v2/", repo.base, "/blobs/uploads/", loc) - } else if strings.Contains(loc, "://") { - curl, err = url.Parse(loc) - if err != nil { - return out, err - } - } else { - curl = repo.urlobj.JoinPath(loc) - } - query := curl.Query() - query.Set("digest", digest) - curl.RawQuery = query.Encode() - out = curl.String() - return out, err -} - -func (repo *Repository) Userinfo() (string, string) { - return repo.user, repo.pass -}