File: context.go

package info (click to toggle)
golang-step-linkedca 0.19.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 520 kB
  • sloc: makefile: 28
file content (75 lines) | stat: -rw-r--r-- 2,546 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package linkedca

import "context"

type contextKeyType int

const (
	_ contextKeyType = iota
	adminContextKey
	provisionerContextKey
	externalAccountKeyContextKey
)

// NewContextWithAdmin returns a copy of ctx which carries an Admin.
func NewContextWithAdmin(ctx context.Context, admin *Admin) context.Context {
	return context.WithValue(ctx, adminContextKey, admin)
}

// AdminFromContext returns an Admin if the ctx carries one and a
// bool indicating if an Admin is carried by the ctx.
func AdminFromContext(ctx context.Context) (a *Admin, ok bool) {
	if a, ok = ctx.Value(adminContextKey).(*Admin); a == nil {
		return nil, false
	}
	return
}

// MustAdminFromContext returns the Admin ctx carries.
//
// MustAdminFromContext panics in case ctx carries no Admin.
func MustAdminFromContext(ctx context.Context) *Admin {
	return ctx.Value(adminContextKey).(*Admin)
}

// NewContextWithProvisioner returns a copy of ctx which carries a Provisioner.
func NewContextWithProvisioner(ctx context.Context, provisioner *Provisioner) context.Context {
	return context.WithValue(ctx, provisionerContextKey, provisioner)
}

// ProvisionerFromContext returns a Provisioner if the ctx carries one and a
// bool indicating if a Provisioner is carried by the ctx.
func ProvisionerFromContext(ctx context.Context) (p *Provisioner, ok bool) {
	if p, ok = ctx.Value(provisionerContextKey).(*Provisioner); p == nil {
		return nil, false
	}
	return
}

// MustProvisionerFromContext returns the Provisioner ctx carries.
//
// MustProvisionerFromContext panics in case ctx carries no Provisioner.
func MustProvisionerFromContext(ctx context.Context) *Provisioner {
	return ctx.Value(provisionerContextKey).(*Provisioner)
}

// NewContextWithExternalAccountKey returns a copy of ctx which carries an EABKey.
func NewContextWithExternalAccountKey(ctx context.Context, k *EABKey) context.Context {
	return context.WithValue(ctx, externalAccountKeyContextKey, k)
}

// ExternalAccountKeyFromContext returns the EABKey if the ctx carries
// one and a bool indicating if an EABKey is carried by the ctx.
func ExternalAccountKeyFromContext(ctx context.Context) (k *EABKey, ok bool) {
	if k, ok = ctx.Value(externalAccountKeyContextKey).(*EABKey); k == nil {
		return nil, false
	}
	return
}

// MustExternalAccountKeyFromContext returns the EABKey ctx carries.
//
// MustExternalAccountKeyFromContext panics in case ctx carries no EABKey.
func MustExternalAccountKeyFromContext(ctx context.Context) *EABKey {
	return ctx.Value(externalAccountKeyContextKey).(*EABKey)
}