github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/chat/externalapikeys.go (about) 1 package chat 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/keybase/client/go/chat/globals" 8 "github.com/keybase/client/go/chat/utils" 9 "github.com/keybase/client/go/protocol/chat1" 10 ) 11 12 type RemoteExternalAPIKeySource struct { 13 globals.Contextified 14 utils.DebugLabeler 15 16 ri func() chat1.RemoteInterface 17 } 18 19 func NewRemoteExternalAPIKeySource(g *globals.Context, ri func() chat1.RemoteInterface) *RemoteExternalAPIKeySource { 20 return &RemoteExternalAPIKeySource{ 21 Contextified: globals.NewContextified(g), 22 DebugLabeler: utils.NewDebugLabeler(g.ExternalG(), "RemoteExternalAPIKeySource", false), 23 ri: ri, 24 } 25 } 26 27 func (r *RemoteExternalAPIKeySource) GetKey(ctx context.Context, typ chat1.ExternalAPIKeyTyp) (res chat1.ExternalAPIKey, err error) { 28 defer r.Trace(ctx, &err, "GetKey")() 29 keys, err := r.ri().GetExternalAPIKeys(ctx, []chat1.ExternalAPIKeyTyp{typ}) 30 if err != nil { 31 return res, err 32 } 33 if len(keys) != 1 { 34 return res, fmt.Errorf("wrong number of keys returned: %d", len(keys)) 35 } 36 rtyp, err := keys[0].Typ() 37 if err != nil { 38 return res, err 39 } 40 if rtyp != typ { 41 return res, fmt.Errorf("server returned wrong key: %v != %v", typ, rtyp) 42 } 43 return keys[0], nil 44 } 45 46 func (r *RemoteExternalAPIKeySource) GetAllKeys(ctx context.Context) (res []chat1.ExternalAPIKey, err error) { 47 defer r.Trace(ctx, &err, "GetAllKeys")() 48 return r.ri().GetExternalAPIKeys(ctx, nil) 49 }