FetchHandler returns a handler that will fetch all content into the ingester discovered in a call to Dispatch. Use with ChildrenHandler to do a full recursive fetch.
(ingester content.Ingester, fetcher Fetcher)
| 116 | // discovered in a call to Dispatch. Use with ChildrenHandler to do a full |
| 117 | // recursive fetch. |
| 118 | func FetchHandler(ingester content.Ingester, fetcher Fetcher) images.HandlerFunc { |
| 119 | return func(ctx context.Context, desc ocispec.Descriptor) ([]ocispec.Descriptor, error) { |
| 120 | ctx = log.WithLogger(ctx, log.G(ctx).WithFields(log.Fields{ |
| 121 | "digest": desc.Digest, |
| 122 | "mediatype": desc.MediaType, |
| 123 | "size": desc.Size, |
| 124 | })) |
| 125 | |
| 126 | if desc.MediaType == images.MediaTypeDockerSchema1Manifest { |
| 127 | return nil, fmt.Errorf("%v not supported", desc.MediaType) |
| 128 | } |
| 129 | err := Fetch(ctx, ingester, fetcher, desc) |
| 130 | if errdefs.IsAlreadyExists(err) { |
| 131 | return nil, nil |
| 132 | } |
| 133 | return nil, err |
| 134 | } |
| 135 | } |
| 136 | |
| 137 | // Fetch fetches the given digest into the provided ingester |
| 138 | func Fetch(ctx context.Context, ingester content.Ingester, fetcher Fetcher, desc ocispec.Descriptor) error { |