Move MediaType into manifest.Versioned
This makes content type sniffing cleaner. The document just needs to be decoded into a manifest.Versioned structure. It's no longer a two-step process. Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>master
							parent
							
								
									fce65b72b3
								
							
						
					
					
						commit
						bbabb55ccb
					
				| 
						 | 
				
			
			@ -1096,8 +1096,8 @@ func testManifestAPISchema2(t *testing.T, env *testEnv, imageName string) manife
 | 
			
		|||
	manifest := &schema2.Manifest{
 | 
			
		||||
		Versioned: manifest.Versioned{
 | 
			
		||||
			SchemaVersion: 2,
 | 
			
		||||
			MediaType:     schema2.MediaTypeManifest,
 | 
			
		||||
		},
 | 
			
		||||
		MediaType: schema2.MediaTypeManifest,
 | 
			
		||||
		Config: distribution.Descriptor{
 | 
			
		||||
			Digest:    "sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b",
 | 
			
		||||
			Size:      3253,
 | 
			
		||||
| 
						 | 
				
			
			@ -1410,8 +1410,8 @@ func testManifestAPIManifestList(t *testing.T, env *testEnv, args manifestArgs)
 | 
			
		|||
	manifestList := &manifestlist.ManifestList{
 | 
			
		||||
		Versioned: manifest.Versioned{
 | 
			
		||||
			SchemaVersion: 2,
 | 
			
		||||
			MediaType:     manifestlist.MediaTypeManifestList,
 | 
			
		||||
		},
 | 
			
		||||
		MediaType: manifestlist.MediaTypeManifestList,
 | 
			
		||||
		Manifests: []manifestlist.ManifestDescriptor{
 | 
			
		||||
			{
 | 
			
		||||
				Descriptor: distribution.Descriptor{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,19 +95,13 @@ func (ms *manifestStore) Get(ctx context.Context, dgst digest.Digest, options ..
 | 
			
		|||
		return ms.schema1Handler.Unmarshal(ctx, dgst, content)
 | 
			
		||||
	case 2:
 | 
			
		||||
		// This can be an image manifest or a manifest list
 | 
			
		||||
		var mediaType struct {
 | 
			
		||||
			MediaType string `json:"mediaType"`
 | 
			
		||||
		}
 | 
			
		||||
		if err = json.Unmarshal(content, &mediaType); err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		switch mediaType.MediaType {
 | 
			
		||||
		switch versioned.MediaType {
 | 
			
		||||
		case schema2.MediaTypeManifest:
 | 
			
		||||
			return ms.schema2Handler.Unmarshal(ctx, dgst, content)
 | 
			
		||||
		case manifestlist.MediaTypeManifestList:
 | 
			
		||||
			return ms.manifestListHandler.Unmarshal(ctx, dgst, content)
 | 
			
		||||
		default:
 | 
			
		||||
			return nil, distribution.ErrManifestVerification{fmt.Errorf("unrecognized manifest content type %s", mediaType.MediaType)}
 | 
			
		||||
			return nil, distribution.ErrManifestVerification{fmt.Errorf("unrecognized manifest content type %s", versioned.MediaType)}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue