diff options
author | Joram Wilander <jwawilander@gmail.com> | 2015-09-22 15:47:57 -0400 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2015-09-22 15:47:57 -0400 |
commit | ac7918c5540900ab0dbe43d61b8c1155e4279b55 (patch) | |
tree | 2e519e101e995d24d656d7cf1f7a9d404303a364 /model/client.go | |
parent | a44e8f0cd904d386caea410398dcaf7dbfd9c138 (diff) | |
parent | 98186e5018bbc604796d4f9762c93f4f75e2913f (diff) | |
download | chat-ac7918c5540900ab0dbe43d61b8c1155e4279b55.tar.gz chat-ac7918c5540900ab0dbe43d61b8c1155e4279b55.tar.bz2 chat-ac7918c5540900ab0dbe43d61b8c1155e4279b55.zip |
Merge pull request #715 from mattermost/plt-27
PLT-27 Implement incoming webhooks.
Diffstat (limited to 'model/client.go')
-rw-r--r-- | model/client.go | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/model/client.go b/model/client.go index f9127719f..6817a80f6 100644 --- a/model/client.go +++ b/model/client.go @@ -48,7 +48,7 @@ func NewClient(url string) *Client { return &Client{url, url + API_URL_SUFFIX, &http.Client{}, "", ""} } -func (c *Client) DoPost(url string, data, contentType string) (*http.Response, *AppError) { +func (c *Client) DoPost(url, data, contentType string) (*http.Response, *AppError) { rq, _ := http.NewRequest("POST", c.Url+url, strings.NewReader(data)) rq.Header.Set("Content-Type", contentType) @@ -806,6 +806,42 @@ func (c *Client) GetAccessToken(data url.Values) (*Result, *AppError) { } } +func (c *Client) CreateIncomingWebhook(hook *IncomingWebhook) (*Result, *AppError) { + if r, err := c.DoApiPost("/hooks/incoming/create", hook.ToJson()); err != nil { + return nil, err + } else { + return &Result{r.Header.Get(HEADER_REQUEST_ID), + r.Header.Get(HEADER_ETAG_SERVER), IncomingWebhookFromJson(r.Body)}, nil + } +} + +func (c *Client) PostToWebhook(id, payload string) (*Result, *AppError) { + if r, err := c.DoPost("/hooks/"+id, payload, "application/x-www-form-urlencoded"); err != nil { + return nil, err + } else { + return &Result{r.Header.Get(HEADER_REQUEST_ID), + r.Header.Get(HEADER_ETAG_SERVER), nil}, nil + } +} + +func (c *Client) DeleteIncomingWebhook(data map[string]string) (*Result, *AppError) { + if r, err := c.DoApiPost("/hooks/incoming/delete", MapToJson(data)); err != nil { + return nil, err + } else { + return &Result{r.Header.Get(HEADER_REQUEST_ID), + r.Header.Get(HEADER_ETAG_SERVER), MapFromJson(r.Body)}, nil + } +} + +func (c *Client) ListIncomingWebhooks() (*Result, *AppError) { + if r, err := c.DoApiGet("/hooks/incoming/list", "", ""); err != nil { + return nil, err + } else { + return &Result{r.Header.Get(HEADER_REQUEST_ID), + r.Header.Get(HEADER_ETAG_SERVER), IncomingWebhookListFromJson(r.Body)}, nil + } +} + func (c *Client) MockSession(sessionToken string) { c.AuthToken = sessionToken c.AuthType = HEADER_BEARER |