From 8a38897f79876b9372715150795b9da570af5a86 Mon Sep 17 00:00:00 2001 From: Luke Granger-Brown Date: Thu, 18 Jun 2020 18:53:08 +0100 Subject: Add context.go to identity, used for attaching identities to and retrieving them from a context.Context --- identity/context.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 identity/context.go (limited to 'identity/context.go') diff --git a/identity/context.go b/identity/context.go new file mode 100644 index 00000000..619e2c29 --- /dev/null +++ b/identity/context.go @@ -0,0 +1,26 @@ +package identity + +import ( + "context" + + "github.com/MichaelMure/git-bug/repository" +) + +// identityCtxKey is a unique context key, accessible only in this struct. +type identityCtxKey struct { + repo string +} + +// AttachToContext attaches an Identity to a context. +func AttachToContext(ctx context.Context, r repository.RepoCommon, u *Identity) context.Context { + return context.WithValue(ctx, identityCtxKey{r.GetPath()}, u) +} + +// ForContext retrieves an Identity from the context, or nil if no Identity is present. +func ForContext(ctx context.Context, r repository.RepoCommon) *Identity { + u, ok := ctx.Value(identityCtxKey{r.GetPath()}).(*Identity) + if !ok { + return nil + } + return u +} -- cgit