diff options
Diffstat (limited to 'teleirc/matterbridge/vendor/github.com/keybase/go-keybase-chat-bot/kbchat/team.go')
| -rw-r--r-- | teleirc/matterbridge/vendor/github.com/keybase/go-keybase-chat-bot/kbchat/team.go | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/teleirc/matterbridge/vendor/github.com/keybase/go-keybase-chat-bot/kbchat/team.go b/teleirc/matterbridge/vendor/github.com/keybase/go-keybase-chat-bot/kbchat/team.go new file mode 100644 index 0000000..d3fa57e --- /dev/null +++ b/teleirc/matterbridge/vendor/github.com/keybase/go-keybase-chat-bot/kbchat/team.go @@ -0,0 +1,84 @@ +package kbchat + +import ( + "bytes" + "encoding/json" + "fmt" + "log" + "strings" + + "github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1" +) + +type ListTeamMembers struct { + Result keybase1.TeamDetails `json:"result"` + Error Error `json:"error"` +} + +type ListMembersOutputMembersCategory struct { + Username string `json:"username"` + FullName string `json:"fullName"` +} + +type ListUserMemberships struct { + Result keybase1.AnnotatedTeamList `json:"result"` + Error Error `json:"error"` +} + +func (a *API) ListMembersOfTeam(teamName string) (res keybase1.TeamMembersDetails, err error) { + teamNameEscaped, err := json.Marshal(teamName) + if err != nil { + return res, err + } + apiInput := fmt.Sprintf(`{"method": "list-team-memberships", "params": {"options": {"team": %s}}}`, teamNameEscaped) + cmd := a.runOpts.Command("team", "api") + cmd.Stdin = strings.NewReader(apiInput) + var stderr bytes.Buffer + cmd.Stderr = &stderr + output, err := cmd.Output() + if err != nil { + return res, APIError{err} + } + if stderr.Len() != 0 { + log.Printf("ListMembersOfTeam error: %s", stderr.String()) + } + + members := ListTeamMembers{} + err = json.Unmarshal(output, &members) + if err != nil { + return res, UnmarshalError{err} + } + if members.Error.Message != "" { + return res, members.Error + } + return members.Result.Members, nil +} + +func (a *API) ListUserMemberships(username string) ([]keybase1.AnnotatedMemberInfo, error) { + usernameEscaped, err := json.Marshal(username) + if err != nil { + return nil, err + } + apiInput := fmt.Sprintf(`{"method": "list-user-memberships", "params": {"options": {"username": %s}}}`, usernameEscaped) + cmd := a.runOpts.Command("team", "api") + cmd.Stdin = strings.NewReader(apiInput) + var stderr bytes.Buffer + cmd.Stderr = &stderr + output, err := cmd.Output() + if err != nil { + return nil, APIError{err} + } + if stderr.Len() != 0 { + log.Printf("ListUserMemberships error: %s", stderr.String()) + } + + members := ListUserMemberships{} + err = json.Unmarshal(output, &members) + if err != nil { + return nil, UnmarshalError{err} + } + if members.Error.Message != "" { + return nil, members.Error + } + return members.Result.Teams, nil +} |
