super basic
This commit is contained in:
52
groupmeExt/client.go
Normal file
52
groupmeExt/client.go
Normal file
@ -0,0 +1,52 @@
|
||||
package groupmeExt
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/karmanyaahm/groupme"
|
||||
)
|
||||
|
||||
type Client struct {
|
||||
*groupme.Client
|
||||
}
|
||||
|
||||
// NewClient creates a new GroupMe API Client
|
||||
func NewClient(authToken string) *Client {
|
||||
n := Client{
|
||||
Client: groupme.NewClient(authToken),
|
||||
}
|
||||
return &n
|
||||
}
|
||||
func (c Client) IndexAllGroups() ([]*groupme.Group, error) {
|
||||
return c.IndexGroups(context.TODO(), &groupme.GroupsQuery{
|
||||
Omit: "memberships",
|
||||
PerPage: 100, //TODO: Configurable and add multipage support
|
||||
})
|
||||
}
|
||||
|
||||
func (c Client) LoadMessagesAfter(groupID, lastMessageID string, lastMessageFromMe bool, num int) ([]*groupme.Message, error) {
|
||||
//TODO: limit max 100
|
||||
i, e := c.IndexMessages(context.TODO(), groupme.ID(groupID), &groupme.IndexMessagesQuery{
|
||||
AfterID: groupme.ID(lastMessageID),
|
||||
Limit: num,
|
||||
})
|
||||
|
||||
if e != nil {
|
||||
return nil, e
|
||||
}
|
||||
return i.Messages, nil
|
||||
}
|
||||
|
||||
func (c Client) LoadMessagesBefore(groupID, lastMessageID string, num int) ([]*groupme.Message, error) {
|
||||
//TODO: limit max 100
|
||||
i, e := c.IndexMessages(context.TODO(), groupme.ID(groupID), &groupme.IndexMessagesQuery{
|
||||
BeforeID: groupme.ID(lastMessageID),
|
||||
Limit: num,
|
||||
})
|
||||
fmt.Println(groupID, lastMessageID, num, i.Count, e)
|
||||
if e != nil {
|
||||
return nil, e
|
||||
}
|
||||
return i.Messages, nil
|
||||
}
|
33
groupmeExt/message.go
Normal file
33
groupmeExt/message.go
Normal file
@ -0,0 +1,33 @@
|
||||
package groupmeExt
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/karmanyaahm/groupme"
|
||||
)
|
||||
|
||||
type Message struct{ groupme.Message }
|
||||
|
||||
func (m *Message) Scan(value interface{}) error {
|
||||
bytes, ok := value.([]byte)
|
||||
if !ok {
|
||||
return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
|
||||
}
|
||||
|
||||
message := Message{}
|
||||
err := json.Unmarshal(bytes, &message)
|
||||
|
||||
*m = Message(message)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *Message) Value() (driver.Value, error) {
|
||||
e, err := json.Marshal(m)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return e, nil
|
||||
}
|
6
groupmeExt/user.go
Normal file
6
groupmeExt/user.go
Normal file
@ -0,0 +1,6 @@
|
||||
package groupmeExt
|
||||
|
||||
const (
|
||||
OldUserSuffix = "@c.groupme.com"
|
||||
NewUserSuffix = "@groupme.com"
|
||||
)
|
Reference in New Issue
Block a user