Skip to content

Commit 9db6aa6

Browse files
authored
Merge pull request #4302 from songjiayang/update-docker-resolver
Refactor dockerResolver with resolveDockerBase helper
2 parents a4f4a43 + 5867c88 commit 9db6aa6

1 file changed

Lines changed: 16 additions & 24 deletions

File tree

remotes/docker/resolver.go

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -219,20 +219,15 @@ func (r *countingReader) Read(p []byte) (int, error) {
219219
var _ remotes.Resolver = &dockerResolver{}
220220

221221
func (r *dockerResolver) Resolve(ctx context.Context, ref string) (string, ocispec.Descriptor, error) {
222-
refspec, err := reference.Parse(ref)
222+
base, err := r.resolveDockerBase(ref)
223223
if err != nil {
224224
return "", ocispec.Descriptor{}, err
225225
}
226-
226+
refspec := base.refspec
227227
if refspec.Object == "" {
228228
return "", ocispec.Descriptor{}, reference.ErrObjectRequired
229229
}
230230

231-
base, err := r.base(refspec)
232-
if err != nil {
233-
return "", ocispec.Descriptor{}, err
234-
}
235-
236231
var (
237232
lastErr error
238233
paths [][]string
@@ -387,12 +382,7 @@ func (r *dockerResolver) Resolve(ctx context.Context, ref string) (string, ocisp
387382
}
388383

389384
func (r *dockerResolver) Fetcher(ctx context.Context, ref string) (remotes.Fetcher, error) {
390-
refspec, err := reference.Parse(ref)
391-
if err != nil {
392-
return nil, err
393-
}
394-
395-
base, err := r.base(refspec)
385+
base, err := r.resolveDockerBase(ref)
396386
if err != nil {
397387
return nil, err
398388
}
@@ -403,23 +393,27 @@ func (r *dockerResolver) Fetcher(ctx context.Context, ref string) (remotes.Fetch
403393
}
404394

405395
func (r *dockerResolver) Pusher(ctx context.Context, ref string) (remotes.Pusher, error) {
406-
refspec, err := reference.Parse(ref)
407-
if err != nil {
408-
return nil, err
409-
}
410-
411-
base, err := r.base(refspec)
396+
base, err := r.resolveDockerBase(ref)
412397
if err != nil {
413398
return nil, err
414399
}
415400

416401
return dockerPusher{
417402
dockerBase: base,
418-
object: refspec.Object,
403+
object: base.refspec.Object,
419404
tracker: r.tracker,
420405
}, nil
421406
}
422407

408+
func (r *dockerResolver) resolveDockerBase(ref string) (*dockerBase, error) {
409+
refspec, err := reference.Parse(ref)
410+
if err != nil {
411+
return nil, err
412+
}
413+
414+
return r.base(refspec)
415+
}
416+
423417
type dockerBase struct {
424418
refspec reference.Spec
425419
repository string
@@ -451,10 +445,8 @@ func (r *dockerBase) filterHosts(caps HostCapabilities) (hosts []RegistryHost) {
451445
}
452446

453447
func (r *dockerBase) request(host RegistryHost, method string, ps ...string) *request {
454-
header := http.Header{}
455-
for key, value := range r.header {
456-
header[key] = append(header[key], value...)
457-
}
448+
header := r.header.Clone()
449+
458450
for key, value := range host.Header {
459451
header[key] = append(header[key], value...)
460452
}

0 commit comments

Comments
 (0)