A container registry that uses the AT Protocol for manifest storage and S3 for blob storage.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix manifest lists?

+26 -18
+26 -18
pkg/appview/storage/manifest_store.go
··· 304 304 serviceToken := s.ctx.ServiceToken 305 305 306 306 // Build notification request 307 + manifestData := map[string]any{ 308 + "mediaType": manifestRecord.MediaType, 309 + } 310 + 311 + // Add config if present (not present in manifest lists/indexes) 312 + if manifestRecord.Config != nil { 313 + manifestData["config"] = map[string]any{ 314 + "digest": manifestRecord.Config.Digest, 315 + "size": manifestRecord.Config.Size, 316 + } 317 + } 318 + 319 + // Add layers if present 320 + if len(manifestRecord.Layers) > 0 { 321 + layers := make([]map[string]any, len(manifestRecord.Layers)) 322 + for i, layer := range manifestRecord.Layers { 323 + layers[i] = map[string]any{ 324 + "digest": layer.Digest, 325 + "size": layer.Size, 326 + "mediaType": layer.MediaType, 327 + } 328 + } 329 + manifestData["layers"] = layers 330 + } 331 + 307 332 notifyReq := map[string]any{ 308 333 "repository": s.ctx.Repository, 309 334 "tag": tag, 310 335 "userDid": s.ctx.DID, 311 336 "userHandle": s.ctx.Handle, 312 - "manifest": map[string]any{ 313 - "mediaType": manifestRecord.MediaType, 314 - "config": map[string]any{ 315 - "digest": manifestRecord.Config.Digest, 316 - "size": manifestRecord.Config.Size, 317 - }, 318 - "layers": func() []map[string]any { 319 - layers := make([]map[string]any, len(manifestRecord.Layers)) 320 - for i, layer := range manifestRecord.Layers { 321 - layers[i] = map[string]any{ 322 - "digest": layer.Digest, 323 - "size": layer.Size, 324 - "mediaType": layer.MediaType, 325 - } 326 - } 327 - return layers 328 - }(), 329 - }, 337 + "manifest": manifestData, 330 338 } 331 339 332 340 // Marshal request