diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-03-13 10:14:16 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-13 10:14:16 -0400 |
commit | 3ebfb369530e28ca3246c5cd2833e666edce9c90 (patch) | |
tree | a91ef74768301db727ca062354af9cac2b444001 /model | |
parent | a284cd8c1817bb5419cb9eae118c85cd7e99c039 (diff) | |
download | chat-3ebfb369530e28ca3246c5cd2833e666edce9c90.tar.gz chat-3ebfb369530e28ca3246c5cd2833e666edce9c90.tar.bz2 chat-3ebfb369530e28ca3246c5cd2833e666edce9c90.zip |
Implement compliance endpoints for APIv4 (#5683)
* Implement compliance endpoints for APIv4
* Add paging to get reports endpoint
Diffstat (limited to 'model')
-rw-r--r-- | model/client4.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/model/client4.go b/model/client4.go index 63f65ed48..94ac2c144 100644 --- a/model/client4.go +++ b/model/client4.go @@ -154,6 +154,14 @@ func (c *Client4) GetIncomingWebhookRoute(hookID string) string { return fmt.Sprintf(c.GetIncomingWebhooksRoute()+"/%v", hookID) } +func (c *Client4) GetComplianceReportsRoute() string { + return fmt.Sprintf("/compliance/reports") +} + +func (c *Client4) GetComplianceReportRoute(reportId string) string { + return fmt.Sprintf("/compliance/reports/%v", reportId) +} + func (c *Client4) GetPreferencesRoute(userId string) string { return fmt.Sprintf(c.GetUserRoute(userId) + "/preferences") } @@ -1276,3 +1284,60 @@ func (c *Client4) GetSamlCertificateStatus() (*SamlCertificateStatus, *Response) return SamlCertificateStatusFromJson(r.Body), BuildResponse(r) } } + +// Compliance Section + +// CreateComplianceReport creates an incoming webhook for a channel. +func (c *Client4) CreateComplianceReport(report *Compliance) (*Compliance, *Response) { + if r, err := c.DoApiPost(c.GetComplianceReportsRoute(), report.ToJson()); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return ComplianceFromJson(r.Body), BuildResponse(r) + } +} + +// GetComplianceReports returns list of compliance reports. +func (c *Client4) GetComplianceReports(page, perPage int) (Compliances, *Response) { + query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) + if r, err := c.DoApiGet(c.GetComplianceReportsRoute()+query, ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return CompliancesFromJson(r.Body), BuildResponse(r) + } +} + +// GetComplianceReport returns a compliance report. +func (c *Client4) GetComplianceReport(reportId string) (*Compliance, *Response) { + if r, err := c.DoApiGet(c.GetComplianceReportRoute(reportId), ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return ComplianceFromJson(r.Body), BuildResponse(r) + } +} + +// DownloadComplianceReport returns a full compliance report as a file. +func (c *Client4) DownloadComplianceReport(reportId string) ([]byte, *Response) { + var rq *http.Request + rq, _ = http.NewRequest("GET", c.ApiUrl+c.GetComplianceReportRoute(reportId), nil) + rq.Close = true + + if len(c.AuthToken) > 0 { + rq.Header.Set(HEADER_AUTH, "BEARER "+c.AuthToken) + } + + if rp, err := c.HttpClient.Do(rq); err != nil { + return nil, &Response{Error: NewAppError("DownloadComplianceReport", "model.client.connecting.app_error", nil, err.Error(), http.StatusBadRequest)} + } else if rp.StatusCode >= 300 { + defer rp.Body.Close() + return nil, &Response{StatusCode: rp.StatusCode, Error: AppErrorFromJson(rp.Body)} + } else if data, err := ioutil.ReadAll(rp.Body); err != nil { + defer closeBody(rp) + return nil, &Response{StatusCode: rp.StatusCode, Error: NewAppError("DownloadComplianceReport", "model.client.read_file.app_error", nil, err.Error(), rp.StatusCode)} + } else { + defer closeBody(rp) + return data, BuildResponse(rp) + } +} |