Skip to content

Commit

Permalink
Expose GetMessages API (#51)
Browse files Browse the repository at this point in the history
* GetMessages API

* check err

* wip

* log

* thread

* msgs

* clean
  • Loading branch information
joshblum committed Feb 3, 2020
1 parent 9ed595f commit 43d83ff
Showing 1 changed file with 67 additions and 0 deletions.
67 changes: 67 additions & 0 deletions kbchat/chat.go
Expand Up @@ -582,3 +582,70 @@ func (a *API) listMembers(arg listMembersArg) (res keybase1.TeamMembersDetails,
}
return members.Result.Members, nil
}

type GetMessagesResult struct {
Result struct {
Messages []chat1.Message `json:"messages"`
} `json:"result"`
Error *Error `json:"error,omitempty"`
}

type getMessagesOptions struct {
Channel chat1.ChatChannel `json:"channel,omitempty"`
ConversationID chat1.ConvIDStr `json:"conversation_id,omitempty"`
MessageIDs []chat1.MessageID `json:"message_ids,omitempty"`
}

type getMessagesParams struct {
Options getMessagesOptions
}

type getMessagesArg struct {
Method string
Params getMessagesParams
}

func newGetMessagesArg(options getMessagesOptions) getMessagesArg {
return getMessagesArg{
Method: "get",
Params: getMessagesParams{
Options: options,
},
}
}

func (a *API) GetMessages(channel chat1.ChatChannel, msgIDs []chat1.MessageID) ([]chat1.Message, error) {
arg := newGetMessagesArg(getMessagesOptions{
Channel: channel,
MessageIDs: msgIDs,
})
return a.getMessages(arg)
}

func (a *API) GetMessagesByConvID(conversationID chat1.ConvIDStr, msgIDs []chat1.MessageID) ([]chat1.Message, error) {
arg := newGetMessagesArg(getMessagesOptions{
ConversationID: conversationID,
MessageIDs: msgIDs,
})
return a.getMessages(arg)
}

func (a *API) getMessages(arg getMessagesArg) ([]chat1.Message, error) {
bArg, err := json.Marshal(arg)
if err != nil {
return nil, err
}
output, err := a.doFetch(string(bArg))
if err != nil {
return nil, err
}
var res GetMessagesResult
err = json.Unmarshal(output, &res)
if err != nil {
return nil, UnmarshalError{err}
}
if res.Error != nil {
return nil, res.Error
}
return res.Result.Messages, nil
}

0 comments on commit 43d83ff

Please sign in to comment.