-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
csa_keys.go
150 lines (114 loc) · 3.49 KB
/
csa_keys.go
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package resolver
import (
"github.com/graph-gophers/graphql-go"
"github.com/pkg/errors"
"github.com/smartcontractkit/chainlink/core/services/keystore"
"github.com/smartcontractkit/chainlink/core/services/keystore/keys/csakey"
)
// CSAKeyResolver resolves the single CSA Key object
type CSAKeyResolver struct {
key csakey.KeyV2
}
func NewCSAKey(key csakey.KeyV2) *CSAKeyResolver {
return &CSAKeyResolver{key: key}
}
// ID resolves the CSA Key public key as the id.
func (r *CSAKeyResolver) ID() graphql.ID {
return graphql.ID(r.key.ID())
}
// PubKey resolves the CSA Key public key string.
func (r *CSAKeyResolver) PublicKey() string {
return r.key.PublicKeyString()
}
// Version resolves the CSA Key version number.
func (r *CSAKeyResolver) Version() int32 {
return int32(r.key.Version)
}
// -- CSAKeys Query --
type CSAKeysPayloadResolver struct {
keys []csakey.KeyV2
}
func NewCSAKeysResolver(keys []csakey.KeyV2) *CSAKeysPayloadResolver {
return &CSAKeysPayloadResolver{keys: keys}
}
func (r *CSAKeysPayloadResolver) Results() []*CSAKeyResolver {
return NewCSAKeys(r.keys)
}
func NewCSAKeys(keys []csakey.KeyV2) []*CSAKeyResolver {
var resolvers []*CSAKeyResolver
for _, k := range keys {
resolvers = append(resolvers, NewCSAKey(k))
}
return resolvers
}
// -- CreateCSAKey Mutation --
type CreateCSAKeyPayloadResolver struct {
key *csakey.KeyV2
err error
}
func NewCreateCSAKeyPayload(key *csakey.KeyV2, err error) *CreateCSAKeyPayloadResolver {
return &CreateCSAKeyPayloadResolver{key: key, err: err}
}
func (r *CreateCSAKeyPayloadResolver) ToCreateCSAKeySuccess() (*CreateCSAKeySuccessResolver, bool) {
if r.key != nil {
return NewCreateCSAKeySuccessResolver(r.key), true
}
return nil, false
}
func (r *CreateCSAKeyPayloadResolver) ToCSAKeyExistsError() (*CSAKeyExistsErrorResolver, bool) {
if r.err != nil && errors.Is(r.err, keystore.ErrCSAKeyExists) {
return NewCSAKeyExistsError(r.err.Error()), true
}
return nil, false
}
type CreateCSAKeySuccessResolver struct {
key *csakey.KeyV2
}
func NewCreateCSAKeySuccessResolver(key *csakey.KeyV2) *CreateCSAKeySuccessResolver {
return &CreateCSAKeySuccessResolver{key: key}
}
func (r *CreateCSAKeySuccessResolver) CSAKey() *CSAKeyResolver {
return NewCSAKey(*r.key)
}
type CSAKeyExistsErrorResolver struct {
message string
}
func NewCSAKeyExistsError(message string) *CSAKeyExistsErrorResolver {
return &CSAKeyExistsErrorResolver{
message: message,
}
}
func (r *CSAKeyExistsErrorResolver) Message() string {
return r.message
}
func (r *CSAKeyExistsErrorResolver) Code() ErrorCode {
return ErrorCodeUnprocessable
}
type DeleteCSAKeySuccessResolver struct {
key csakey.KeyV2
}
func NewDeleteCSAKeySuccess(key csakey.KeyV2) *DeleteCSAKeySuccessResolver {
return &DeleteCSAKeySuccessResolver{key: key}
}
func (r *DeleteCSAKeySuccessResolver) CSAKey() *CSAKeyResolver {
return NewCSAKey(r.key)
}
type DeleteCSAKeyPayloadResolver struct {
key csakey.KeyV2
NotFoundErrorUnionType
}
func NewDeleteCSAKeyPayload(key csakey.KeyV2, err error) *DeleteCSAKeyPayloadResolver {
var e NotFoundErrorUnionType
if err != nil {
e = NotFoundErrorUnionType{err: err, message: err.Error(), isExpectedErrorFn: func(err error) bool {
return errors.As(err, &keystore.KeyNotFoundError{})
}}
}
return &DeleteCSAKeyPayloadResolver{key: key, NotFoundErrorUnionType: e}
}
func (r *DeleteCSAKeyPayloadResolver) ToDeleteCSAKeySuccess() (*DeleteCSAKeySuccessResolver, bool) {
if r.err == nil {
return NewDeleteCSAKeySuccess(r.key), true
}
return nil, false
}