summaryrefslogtreecommitdiffstats
path: root/model
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-03-13 10:40:43 -0400
committerGitHub <noreply@github.com>2017-03-13 10:40:43 -0400
commit19c67d7fe35f92ae8a288dcdb9877d3bede41a61 (patch)
tree1119f74c30564ce53d5e7dc566009594e348f494 /model
parent3ebfb369530e28ca3246c5cd2833e666edce9c90 (diff)
downloadchat-19c67d7fe35f92ae8a288dcdb9877d3bede41a61.tar.gz
chat-19c67d7fe35f92ae8a288dcdb9877d3bede41a61.tar.bz2
chat-19c67d7fe35f92ae8a288dcdb9877d3bede41a61.zip
Implement GET and POST /hooks/outgoing endpoints for APIv4 (#5645)
Diffstat (limited to 'model')
-rw-r--r--model/client4.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/model/client4.go b/model/client4.go
index 94ac2c144..629bc69dd 100644
--- a/model/client4.go
+++ b/model/client4.go
@@ -162,6 +162,10 @@ func (c *Client4) GetComplianceReportRoute(reportId string) string {
return fmt.Sprintf("/compliance/reports/%v", reportId)
}
+func (c *Client4) GetOutgoingWebhooksRoute() string {
+ return fmt.Sprintf("/hooks/outgoing")
+}
+
func (c *Client4) GetPreferencesRoute(userId string) string {
return fmt.Sprintf(c.GetUserRoute(userId) + "/preferences")
}
@@ -1125,6 +1129,49 @@ func (c *Client4) DeleteIncomingWebhook(hookID string) (bool, *Response) {
}
}
+// CreateOutgoingWebhook creates an outgoing webhook for a team or channel.
+func (c *Client4) CreateOutgoingWebhook(hook *OutgoingWebhook) (*OutgoingWebhook, *Response) {
+ if r, err := c.DoApiPost(c.GetOutgoingWebhooksRoute(), hook.ToJson()); err != nil {
+ return nil, &Response{StatusCode: r.StatusCode, Error: err}
+ } else {
+ defer closeBody(r)
+ return OutgoingWebhookFromJson(r.Body), BuildResponse(r)
+ }
+}
+
+// GetOutgoingWebhooks returns a page of outgoing webhooks on the system. Page counting starts at 0.
+func (c *Client4) GetOutgoingWebhooks(page int, perPage int, etag string) ([]*OutgoingWebhook, *Response) {
+ query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage)
+ if r, err := c.DoApiGet(c.GetOutgoingWebhooksRoute()+query, etag); err != nil {
+ return nil, &Response{StatusCode: r.StatusCode, Error: err}
+ } else {
+ defer closeBody(r)
+ return OutgoingWebhookListFromJson(r.Body), BuildResponse(r)
+ }
+}
+
+// GetOutgoingWebhooksForChannel returns a page of outgoing webhooks for a channel. Page counting starts at 0.
+func (c *Client4) GetOutgoingWebhooksForChannel(channelId string, page int, perPage int, etag string) ([]*OutgoingWebhook, *Response) {
+ query := fmt.Sprintf("?page=%v&per_page=%v&channel_id=%v", page, perPage, channelId)
+ if r, err := c.DoApiGet(c.GetOutgoingWebhooksRoute()+query, etag); err != nil {
+ return nil, &Response{StatusCode: r.StatusCode, Error: err}
+ } else {
+ defer closeBody(r)
+ return OutgoingWebhookListFromJson(r.Body), BuildResponse(r)
+ }
+}
+
+// GetOutgoingWebhooksForTeam returns a page of outgoing webhooks for a team. Page counting starts at 0.
+func (c *Client4) GetOutgoingWebhooksForTeam(teamId string, page int, perPage int, etag string) ([]*OutgoingWebhook, *Response) {
+ query := fmt.Sprintf("?page=%v&per_page=%v&team_id=%v", page, perPage, teamId)
+ if r, err := c.DoApiGet(c.GetOutgoingWebhooksRoute()+query, etag); err != nil {
+ return nil, &Response{StatusCode: r.StatusCode, Error: err}
+ } else {
+ defer closeBody(r)
+ return OutgoingWebhookListFromJson(r.Body), BuildResponse(r)
+ }
+}
+
// Preferences Section
// GetPreferences returns the user's preferences.