mirror of
https://github.com/cwinfo/matterbridge.git
synced 2025-09-19 03:42:30 +00:00
Update kekeybase/go-keybase-chat-bot vendor
This commit is contained in:
228
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/kvstore.go
generated
vendored
Normal file
228
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/kvstore.go
generated
vendored
Normal file
@@ -0,0 +1,228 @@
|
||||
package kbchat
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1"
|
||||
)
|
||||
|
||||
type kvstoreMethod string
|
||||
|
||||
type kvstoreOptions struct {
|
||||
Team *string `json:"team"`
|
||||
Namespace *string `json:"namespace,omitempty"`
|
||||
EntryKey *string `json:"entryKey,omitempty"`
|
||||
EntryValue *string `json:"entryValue,omitempty"`
|
||||
Revision *int `json:"revision,omitempty"`
|
||||
}
|
||||
|
||||
type kvstoreParams struct {
|
||||
Options kvstoreOptions `json:"options"`
|
||||
}
|
||||
|
||||
type kvstoreAPIReq struct {
|
||||
Method kvstoreMethod `json:"method"`
|
||||
Params kvstoreParams `json:"params"`
|
||||
}
|
||||
|
||||
type GetEntryRes struct {
|
||||
Result keybase1.KVGetResult `json:"result"`
|
||||
Error Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type PutEntryRes struct {
|
||||
Result keybase1.KVPutResult `json:"result"`
|
||||
Error Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteEntryRes struct {
|
||||
Result keybase1.KVDeleteEntryResult `json:"result"`
|
||||
Error Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type ListNamespacesRes struct {
|
||||
Result keybase1.KVListNamespaceResult `json:"result"`
|
||||
Error Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type ListEntryKeysRes struct {
|
||||
Result keybase1.KVListEntryResult `json:"result"`
|
||||
Error Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type KVStoreAPI interface {
|
||||
PutEntry(teamName *string, namespace string, entryKey string, entryValue string) (keybase1.KVPutResult, error)
|
||||
PutEntryWithRevision(teamName *string, namespace string, entryKey string, entryValue string, revision int) (keybase1.KVPutResult, error)
|
||||
DeleteEntry(teamName *string, namespace string, entryKey string) (keybase1.KVDeleteEntryResult, error)
|
||||
DeleteEntryWithRevision(teamName *string, namespace string, entryKey string, revision int) (keybase1.KVDeleteEntryResult, error)
|
||||
GetEntry(teamName *string, namespace string, entryKey string) (keybase1.KVGetResult, error)
|
||||
ListNamespaces(teamName *string) (keybase1.KVListNamespaceResult, error)
|
||||
ListEntryKeys(teamName *string, namespace string) (keybase1.KVListEntryResult, error)
|
||||
}
|
||||
|
||||
func (a *API) PutEntry(teamName *string, namespace string, entryKey string, entryValue string) (result keybase1.KVPutResult, err error) {
|
||||
return a.PutEntryWithRevision(teamName, namespace, entryKey, entryValue, 0)
|
||||
}
|
||||
|
||||
func (a *API) PutEntryWithRevision(teamName *string, namespace string, entryKey string, entryValue string, revision int) (result keybase1.KVPutResult, err error) {
|
||||
|
||||
opts := kvstoreOptions{
|
||||
Team: teamName,
|
||||
Namespace: &namespace,
|
||||
EntryKey: &entryKey,
|
||||
EntryValue: &entryValue,
|
||||
}
|
||||
if revision != 0 {
|
||||
opts.Revision = &revision
|
||||
}
|
||||
args := kvstoreAPIReq{Method: "put", Params: kvstoreParams{Options: opts}}
|
||||
apiInput, err := json.Marshal(args)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
cmd := a.runOpts.Command("kvstore", "api")
|
||||
cmd.Stdin = strings.NewReader(string(apiInput))
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return result, APIError{err}
|
||||
}
|
||||
|
||||
entry := PutEntryRes{}
|
||||
err = json.Unmarshal(bytes, &entry)
|
||||
if err != nil {
|
||||
return result, UnmarshalError{err}
|
||||
}
|
||||
if entry.Error.Message != "" {
|
||||
return result, entry.Error
|
||||
}
|
||||
return entry.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) DeleteEntry(teamName *string, namespace string, entryKey string) (result keybase1.KVDeleteEntryResult, err error) {
|
||||
return a.DeleteEntryWithRevision(teamName, namespace, entryKey, 0)
|
||||
}
|
||||
|
||||
func (a *API) DeleteEntryWithRevision(teamName *string, namespace string, entryKey string, revision int) (result keybase1.KVDeleteEntryResult, err error) {
|
||||
|
||||
opts := kvstoreOptions{
|
||||
Team: teamName,
|
||||
Namespace: &namespace,
|
||||
EntryKey: &entryKey,
|
||||
}
|
||||
if revision != 0 {
|
||||
opts.Revision = &revision
|
||||
}
|
||||
args := kvstoreAPIReq{Method: "del", Params: kvstoreParams{Options: opts}}
|
||||
apiInput, err := json.Marshal(args)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
cmd := a.runOpts.Command("kvstore", "api")
|
||||
cmd.Stdin = strings.NewReader(string(apiInput))
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return result, APIError{err}
|
||||
}
|
||||
|
||||
entry := DeleteEntryRes{}
|
||||
err = json.Unmarshal(bytes, &entry)
|
||||
if err != nil {
|
||||
return result, UnmarshalError{err}
|
||||
}
|
||||
if entry.Error.Message != "" {
|
||||
return result, entry.Error
|
||||
}
|
||||
return entry.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) GetEntry(teamName *string, namespace string, entryKey string) (result keybase1.KVGetResult, err error) {
|
||||
|
||||
opts := kvstoreOptions{
|
||||
Team: teamName,
|
||||
Namespace: &namespace,
|
||||
EntryKey: &entryKey,
|
||||
}
|
||||
args := kvstoreAPIReq{Method: "get", Params: kvstoreParams{Options: opts}}
|
||||
apiInput, err := json.Marshal(args)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
cmd := a.runOpts.Command("kvstore", "api")
|
||||
cmd.Stdin = strings.NewReader(string(apiInput))
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return result, APIError{err}
|
||||
}
|
||||
|
||||
entry := GetEntryRes{}
|
||||
err = json.Unmarshal(bytes, &entry)
|
||||
if err != nil {
|
||||
return result, UnmarshalError{err}
|
||||
}
|
||||
if entry.Error.Message != "" {
|
||||
return result, entry.Error
|
||||
}
|
||||
return entry.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) ListNamespaces(teamName *string) (result keybase1.KVListNamespaceResult, err error) {
|
||||
|
||||
opts := kvstoreOptions{
|
||||
Team: teamName,
|
||||
}
|
||||
args := kvstoreAPIReq{Method: "list", Params: kvstoreParams{Options: opts}}
|
||||
apiInput, err := json.Marshal(args)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
cmd := a.runOpts.Command("kvstore", "api")
|
||||
cmd.Stdin = strings.NewReader(string(apiInput))
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return result, APIError{err}
|
||||
}
|
||||
|
||||
var namespaces ListNamespacesRes
|
||||
err = json.Unmarshal(bytes, &namespaces)
|
||||
if err != nil {
|
||||
return result, UnmarshalError{err}
|
||||
}
|
||||
if namespaces.Error.Message != "" {
|
||||
return result, namespaces.Error
|
||||
}
|
||||
return namespaces.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) ListEntryKeys(teamName *string, namespace string) (result keybase1.KVListEntryResult, err error) {
|
||||
|
||||
opts := kvstoreOptions{
|
||||
Team: teamName,
|
||||
Namespace: &namespace,
|
||||
}
|
||||
args := kvstoreAPIReq{Method: "list", Params: kvstoreParams{Options: opts}}
|
||||
apiInput, err := json.Marshal(args)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
cmd := a.runOpts.Command("kvstore", "api")
|
||||
cmd.Stdin = strings.NewReader(string(apiInput))
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return result, APIError{err}
|
||||
}
|
||||
|
||||
entryKeys := ListEntryKeysRes{}
|
||||
err = json.Unmarshal(bytes, &entryKeys)
|
||||
if err != nil {
|
||||
return result, UnmarshalError{err}
|
||||
}
|
||||
if entryKeys.Error.Message != "" {
|
||||
return result, entryKeys.Error
|
||||
}
|
||||
return entryKeys.Result, nil
|
||||
}
|
Reference in New Issue
Block a user