summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/slack-go/slack/audit.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2021-07-31 18:27:55 +0200
committerGitHub <noreply@github.com>2021-07-31 18:27:55 +0200
commit44f3e2557dad86129419ed098c29e67638519f4f (patch)
tree17b8ddba49057cd8bf39cdf2618b31c7f6bc8c6a /vendor/github.com/slack-go/slack/audit.go
parent1f365c716eae44b64dc5bdace5cb70441d7eb4c2 (diff)
downloadmatterbridge-msglm-44f3e2557dad86129419ed098c29e67638519f4f.tar.gz
matterbridge-msglm-44f3e2557dad86129419ed098c29e67638519f4f.tar.bz2
matterbridge-msglm-44f3e2557dad86129419ed098c29e67638519f4f.zip
Update vendor (#1560)
Diffstat (limited to 'vendor/github.com/slack-go/slack/audit.go')
-rw-r--r--vendor/github.com/slack-go/slack/audit.go144
1 files changed, 144 insertions, 0 deletions
diff --git a/vendor/github.com/slack-go/slack/audit.go b/vendor/github.com/slack-go/slack/audit.go
new file mode 100644
index 00000000..698af844
--- /dev/null
+++ b/vendor/github.com/slack-go/slack/audit.go
@@ -0,0 +1,144 @@
+package slack
+
+import (
+ "context"
+ "net/url"
+ "strconv"
+)
+
+type AuditLogResponse struct {
+ Entries []AuditEntry `json:"entries"`
+ SlackResponse
+}
+
+type AuditEntry struct {
+ ID string `json:"id"`
+ DateCreate int `json:"date_create"`
+ Action string `json:"action"`
+ Actor struct {
+ Type string `json:"type"`
+ User AuditUser `json:"user"`
+ } `json:"actor"`
+ Entity struct {
+ Type string `json:"type"`
+ // Only one of the below will be completed, based on the value of Type a user, a channel, a file, an app, a workspace, or an enterprise
+ User AuditUser `json:"user"`
+ Channel AuditChannel `json:"channel"`
+ File AuditFile `json:"file"`
+ App AuditApp `json:"app"`
+ Workspace AuditWorkspace `json:"workspace"`
+ Enterprise AuditEnterprise `json:"enterprise"`
+ } `json:"entity"`
+ Context struct {
+ Location struct {
+ Type string `json:"type"`
+ ID string `json:"id"`
+ Name string `json:"name"`
+ Domain string `json:"domain"`
+ } `json:"location"`
+ UA string `json:"ua"`
+ IPAddress string `json:"ip_address"`
+ } `json:"context"`
+}
+
+type AuditUser struct {
+ ID string `json:"id"`
+ Name string `json:"name"`
+ Email string `json:"email"`
+ Team string `json:"team"`
+}
+
+type AuditChannel struct {
+ ID string `json:"id"`
+ Name string `json:"name"`
+ Privacy string `json:"privacy"`
+ IsShared bool `json:"is_shared"`
+ IsOrgShared bool `json:"is_org_shared"`
+}
+
+type AuditFile struct {
+ ID string `json:"id"`
+ Name string `json:"name"`
+ Filetype string `json:"filetype"`
+ Title string `json:"title"`
+}
+
+type AuditApp struct {
+ ID string `json:"id"`
+ Name string `json:"name"`
+ IsDistributed bool `json:"is_distributed"`
+ IsDirectoryApproved bool `json:"is_directory_approved"`
+ IsWorkflowApp bool `json:"is_workflow_app"`
+ Scopes []string `json:"scopes"`
+}
+
+type AuditWorkspace struct {
+ ID string `json:"id"`
+ Name string `json:"name"`
+ Domain string `json:"domain"`
+}
+
+type AuditEnterprise struct {
+ ID string `json:"id"`
+ Name string `json:"name"`
+ Domain string `json:"domain"`
+}
+
+// AuditLogParameters contains all the parameters necessary (including the optional ones) for a GetAuditLogs() request
+type AuditLogParameters struct {
+ Limit int
+ Cursor string
+ Latest int
+ Oldest int
+ Action string
+ Actor string
+ Entity string
+}
+
+func (api *Client) auditLogsRequest(ctx context.Context, path string, values url.Values) (*AuditLogResponse, error) {
+ response := &AuditLogResponse{}
+ err := api.getMethod(ctx, path, api.token, values, response)
+ if err != nil {
+ return nil, err
+ }
+ return response, response.Err()
+}
+
+// GetAuditLogs retrieves a page of audit entires according to the parameters given
+func (api *Client) GetAuditLogs(params AuditLogParameters) (entries []AuditEntry, nextCursor string, err error) {
+ return api.GetAuditLogsContext(context.Background(), params)
+}
+
+// GetAuditLogsContext retrieves a page of audit entries according to the parameters given with a custom context
+func (api *Client) GetAuditLogsContext(ctx context.Context, params AuditLogParameters) (entries []AuditEntry, nextCursor string, err error) {
+ values := url.Values{
+ "token": {api.token},
+ }
+ if params.Limit != 0 {
+ values.Add("count", strconv.Itoa(params.Limit))
+ }
+ if params.Oldest != 0 {
+ values.Add("oldest", strconv.Itoa(params.Oldest))
+ }
+ if params.Latest != 0 {
+ values.Add("latest", strconv.Itoa(params.Latest))
+ }
+ if params.Cursor != "" {
+ values.Add("cursor", params.Cursor)
+ }
+ if params.Action != "" {
+ values.Add("action", params.Action)
+ }
+ if params.Actor != "" {
+ values.Add("actor", params.Actor)
+ }
+ if params.Entity != "" {
+ values.Add("entity", params.Entity)
+ }
+
+ response, err := api.auditLogsRequest(ctx, "audit/v1/logs", values)
+ if err != nil {
+ return nil, "", err
+ }
+ return response.Entries, response.ResponseMetadata.Cursor, response.Err()
+}