package middleware import ( "context" ) type contextKey string const ( // manifestInfoKey the context key for manifest info manifestInfoKey = contextKey("ManifestInfo") // ScannerPullCtxKey the context key for robot account to bypass the pull policy check. ScannerPullCtxKey = contextKey("ScannerPullCheck") ) // ManifestInfo ... type ManifestInfo struct { ProjectID int64 Repository string Tag string Digest string } // NewManifestInfoContext returns context with manifest info func NewManifestInfoContext(ctx context.Context, info *ManifestInfo) context.Context { return context.WithValue(ctx, manifestInfoKey, info) } // ManifestInfoFromContext returns manifest info from context func ManifestInfoFromContext(ctx context.Context) (*ManifestInfo, bool) { info, ok := ctx.Value(manifestInfoKey).(*ManifestInfo) return info, ok } // NewScannerPullContext returns context with policy check info func NewScannerPullContext(ctx context.Context, scannerPull bool) context.Context { return context.WithValue(ctx, ScannerPullCtxKey, scannerPull) }