A container registry that uses the AT Protocol for manifest storage and S3 for blob storage. atcr.io
docker container atproto go
72
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