diff --git a/README.md b/README.md index f40c0d9..97438de 100755 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ I would like to add common helper functions/features inspired by the package use
# GroupMe API Wrapper +![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/densestvoid/groupme?label=version&logo=version&sort=semver) +[![PkgGoDev](https://pkg.go.dev/badge/github.com/densestvoid/groupme)](https://pkg.go.dev/github.com/densestvoid/groupme) ## Description The design of this package is meant to be super simple. Wrap the exposed API endpoints [documented](https://dev.groupme.com/docs/v3#v3) by the GroupMe team. While you can achieve the core of this package with cURL, there are some small added features, coupled along with a modern language, that should simplify writing GroupMe [bots](https://dev.groupme.com/bots) and [applications](https://dev.groupme.com/applications). @@ -17,51 +19,50 @@ I enjoy programming, I use GroupMe with friends, and I wanted to write a fun add package main import ( - "fmt" + "fmt" - "github.com/densestvoid/groupme" + "github.com/densestvoid/groupme" ) // This is not a real token. Please find yours by logging // into the GroupMe development website: https://dev.groupme.com/ const authorizationToken = "0123456789ABCDEF" - // A short program that gets the gets the first 5 groups // the user is part of, and then the first 10 messages of // the first group in that list func main() { - // Create a new client with your auth token - client := groupme.NewClient(authorizationToken) + // Create a new client with your auth token + client := groupme.NewClient(authorizationToken) - // Get the groups your user is part of - groups, err := client.IndexGroups(&GroupsQuery{ - Page: 0, - PerPage: 5, - Omit: "memberships", - }) + // Get the groups your user is part of + groups, err := client.IndexGroups(&groupme.GroupsQuery{ + Page: 0, + PerPage: 5, + Omit: "memberships", + }) - if err != nil { - fmt.Println(err) - return - } + if err != nil { + fmt.Println(err) + return + } - fmt.Println(groups) + fmt.Println(groups) - // Get first 10 messages of the first group - if len(groups) <= 0 { - fmt.Println("No groups") - } + // Get first 10 messages of the first group + if len(groups) <= 0 { + fmt.Println("No groups") + } - messages, err := client.IndexMessages(groups[0].ID, &IndexMessagesQuery{ - Limit: 10, - }) + messages, err := client.IndexMessages(groups[0].ID, &groupme.IndexMessagesQuery{ + Limit: 10, + }) - if err != nil { - fmt.Println(err) - } + if err != nil { + fmt.Println(err) + } - fmt.Println(messages) + fmt.Println(messages) } ``` diff --git a/blocks_api_test.go b/blocks_api_test.go index b754a32..a856c86 100644 --- a/blocks_api_test.go +++ b/blocks_api_test.go @@ -46,7 +46,7 @@ func TestBlocksAPISuite(t *testing.T) { } func blocksTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Index router.Path("/blocks"). diff --git a/bots_api.go b/bots_api.go index 384e41e..b901223 100644 --- a/bots_api.go +++ b/bots_api.go @@ -73,6 +73,7 @@ Parameters: pictureURL - string; image must be processed through image service (https://dev.groupme.com/docs/image_service) */ +// TODO: Move PostBotMessage to bot object, since it doesn't require access token func (c *Client) PostBotMessage(botID ID, text string, pictureURL *string) error { URL := fmt.Sprintf(c.endpointBase + postBotMessageEndpoint) diff --git a/bots_api_test.go b/bots_api_test.go index d3a98fc..9662e70 100644 --- a/bots_api_test.go +++ b/bots_api_test.go @@ -51,7 +51,7 @@ func TestBotsAPISuite(t *testing.T) { } func botsTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Create router.Path("/bots"). diff --git a/chats_api_test.go b/chats_api_test.go index bcc3faf..c7239be 100644 --- a/chats_api_test.go +++ b/chats_api_test.go @@ -35,7 +35,7 @@ func TestChatsAPISuite(t *testing.T) { } func chatsTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Index router.Path("/chats"). diff --git a/client.go b/client.go index 0b382db..3879a27 100644 --- a/client.go +++ b/client.go @@ -59,6 +59,11 @@ func (r response) UnmarshalJSON(bs []byte) error { } func (c Client) do(req *http.Request, i interface{}) error { + URL := req.URL + query := URL.Query() + query.Set("token", c.authorizationToken) + URL.RawQuery = query.Encode() + getResp, err := c.httpClient.Do(req) if err != nil { return err diff --git a/direct_messages_api_test.go b/direct_messages_api_test.go index 3f54cac..6c6a161 100644 --- a/direct_messages_api_test.go +++ b/direct_messages_api_test.go @@ -48,7 +48,7 @@ func TestDirectMessagesAPISuite(t *testing.T) { } func directMessagesTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Index router.Path("/direct_messages"). diff --git a/examples/group_messages/main.go b/examples/group_messages/main.go new file mode 100644 index 0000000..d1a3597 --- /dev/null +++ b/examples/group_messages/main.go @@ -0,0 +1,48 @@ +package main + +import ( + "fmt" + + "github.com/densestvoid/groupme" +) + +// This is not a real token. Please find yours by logging +// into the GroupMe development website: https://dev.groupme.com/ +const authorizationToken = "0123456789ABCDEF" + +// A short program that gets the gets the first 5 groups +// the user is part of, and then the first 10 messages of +// the first group in that list +func main() { + // Create a new client with your auth token + client := groupme.NewClient(authorizationToken) + + // Get the groups your user is part of + groups, err := client.IndexGroups(&groupme.GroupsQuery{ + Page: 0, + PerPage: 5, + Omit: "memberships", + }) + + if err != nil { + fmt.Println(err) + return + } + + fmt.Println(groups) + + // Get first 10 messages of the first group + if len(groups) <= 0 { + fmt.Println("No groups") + } + + messages, err := client.IndexMessages(groups[0].ID, &groupme.IndexMessagesQuery{ + Limit: 10, + }) + + if err != nil { + fmt.Println(err) + } + + fmt.Println(messages) +} diff --git a/groups_api_test.go b/groups_api_test.go index 9e213fc..0d6d749 100755 --- a/groups_api_test.go +++ b/groups_api_test.go @@ -110,7 +110,7 @@ func TestGroupsAPISuite(t *testing.T) { ////////// Test Groups Router ////////// func groupsTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Index router.Path("/groups"). diff --git a/leaderboard_api_test.go b/leaderboard_api_test.go index 3d3ed71..95ffa3b 100644 --- a/leaderboard_api_test.go +++ b/leaderboard_api_test.go @@ -48,7 +48,7 @@ func TestLeaderboardAPISuite(t *testing.T) { } func leaderboardTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Index router.Path("/groups/{id:[0-9]+}/likes"). diff --git a/likes_api_test.go b/likes_api_test.go index b85ace8..a9b88a3 100644 --- a/likes_api_test.go +++ b/likes_api_test.go @@ -29,7 +29,7 @@ func TestLikesAPISuite(t *testing.T) { suite.Run(t, new(LikesAPISuite)) } func likesTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Create router.Path(`/messages/{conversation_id}/{message_id}/like`). diff --git a/members_api_test.go b/members_api_test.go index 4ada37c..809f1ff 100644 --- a/members_api_test.go +++ b/members_api_test.go @@ -44,7 +44,7 @@ func TestMembersAPISuite(t *testing.T) { } func membersTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Add router.Path("/groups/{id:[0-9]+}/members/add"). diff --git a/messages_api_test.go b/messages_api_test.go index 6a81dad..b8c8d36 100644 --- a/messages_api_test.go +++ b/messages_api_test.go @@ -50,7 +50,7 @@ func TestMessagesAPISuite(t *testing.T) { } func messagesTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Index router.Path("/groups/{id:[0-9]+}/messages"). diff --git a/sms_mode_api_test.go b/sms_mode_api_test.go index d4be18b..3f6e673 100644 --- a/sms_mode_api_test.go +++ b/sms_mode_api_test.go @@ -27,7 +27,7 @@ func TestSMSModeAPISuite(t *testing.T) { } func smsModeTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Create router.Path("/users/sms_mode"). diff --git a/users_api_test.go b/users_api_test.go index 19ebad3..b3c1015 100644 --- a/users_api_test.go +++ b/users_api_test.go @@ -32,7 +32,7 @@ func TestUsersAPISuite(t *testing.T) { suite.Run(t, new(UsersAPISuite)) } func usersTestRouter() *mux.Router { - router := mux.NewRouter() + router := mux.NewRouter().Queries("token", "").Subrouter() // Me router.Path("/users/me").