diff options
author | Wim <wim@42.be> | 2020-03-01 20:59:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-01 20:59:19 +0100 |
commit | 250b3bb5795240d5ebdab5416ab99dbc41be734b (patch) | |
tree | 11e44ec2e7e37cd7eb0deaf0a7843fe6bf3c0e40 /vendor/github.com/nlopes/slack/files.go | |
parent | e9edbfc051afc643d91fc04bc7fb3fe70039c213 (diff) | |
download | matterbridge-msglm-250b3bb5795240d5ebdab5416ab99dbc41be734b.tar.gz matterbridge-msglm-250b3bb5795240d5ebdab5416ab99dbc41be734b.tar.bz2 matterbridge-msglm-250b3bb5795240d5ebdab5416ab99dbc41be734b.zip |
Use upstream slack-go/slack again (#1018)
Diffstat (limited to 'vendor/github.com/nlopes/slack/files.go')
-rw-r--r-- | vendor/github.com/nlopes/slack/files.go | 404 |
1 files changed, 0 insertions, 404 deletions
diff --git a/vendor/github.com/nlopes/slack/files.go b/vendor/github.com/nlopes/slack/files.go deleted file mode 100644 index 3a7363de..00000000 --- a/vendor/github.com/nlopes/slack/files.go +++ /dev/null @@ -1,404 +0,0 @@ -package slack - -import ( - "context" - "fmt" - "io" - "net/url" - "strconv" - "strings" -) - -const ( - // Add here the defaults in the siten - DEFAULT_FILES_USER = "" - DEFAULT_FILES_CHANNEL = "" - DEFAULT_FILES_TS_FROM = 0 - DEFAULT_FILES_TS_TO = -1 - DEFAULT_FILES_TYPES = "all" - DEFAULT_FILES_COUNT = 100 - DEFAULT_FILES_PAGE = 1 -) - -// File contains all the information for a file -type File struct { - ID string `json:"id"` - Created JSONTime `json:"created"` - Timestamp JSONTime `json:"timestamp"` - - Name string `json:"name"` - Title string `json:"title"` - Mimetype string `json:"mimetype"` - ImageExifRotation int `json:"image_exif_rotation"` - Filetype string `json:"filetype"` - PrettyType string `json:"pretty_type"` - User string `json:"user"` - - Mode string `json:"mode"` - Editable bool `json:"editable"` - IsExternal bool `json:"is_external"` - ExternalType string `json:"external_type"` - - Size int `json:"size"` - - URL string `json:"url"` // Deprecated - never set - URLDownload string `json:"url_download"` // Deprecated - never set - URLPrivate string `json:"url_private"` - URLPrivateDownload string `json:"url_private_download"` - - OriginalH int `json:"original_h"` - OriginalW int `json:"original_w"` - Thumb64 string `json:"thumb_64"` - Thumb80 string `json:"thumb_80"` - Thumb160 string `json:"thumb_160"` - Thumb360 string `json:"thumb_360"` - Thumb360Gif string `json:"thumb_360_gif"` - Thumb360W int `json:"thumb_360_w"` - Thumb360H int `json:"thumb_360_h"` - Thumb480 string `json:"thumb_480"` - Thumb480W int `json:"thumb_480_w"` - Thumb480H int `json:"thumb_480_h"` - Thumb720 string `json:"thumb_720"` - Thumb720W int `json:"thumb_720_w"` - Thumb720H int `json:"thumb_720_h"` - Thumb960 string `json:"thumb_960"` - Thumb960W int `json:"thumb_960_w"` - Thumb960H int `json:"thumb_960_h"` - Thumb1024 string `json:"thumb_1024"` - Thumb1024W int `json:"thumb_1024_w"` - Thumb1024H int `json:"thumb_1024_h"` - - Permalink string `json:"permalink"` - PermalinkPublic string `json:"permalink_public"` - - EditLink string `json:"edit_link"` - Preview string `json:"preview"` - PreviewHighlight string `json:"preview_highlight"` - Lines int `json:"lines"` - LinesMore int `json:"lines_more"` - - IsPublic bool `json:"is_public"` - PublicURLShared bool `json:"public_url_shared"` - Channels []string `json:"channels"` - Groups []string `json:"groups"` - IMs []string `json:"ims"` - InitialComment Comment `json:"initial_comment"` - CommentsCount int `json:"comments_count"` - NumStars int `json:"num_stars"` - IsStarred bool `json:"is_starred"` - Shares Share `json:"shares"` -} - -type Share struct { - Public map[string][]ShareFileInfo `json:"public"` - Private map[string][]ShareFileInfo `json:"private"` -} - -type ShareFileInfo struct { - ReplyUsers []string `json:"reply_users"` - ReplyUsersCount int `json:"reply_users_count"` - ReplyCount int `json:"reply_count"` - Ts string `json:"ts"` - ThreadTs string `json:"thread_ts"` - LatestReply string `json:"latest_reply"` - ChannelName string `json:"channel_name"` - TeamID string `json:"team_id"` -} - -// FileUploadParameters contains all the parameters necessary (including the optional ones) for an UploadFile() request. -// -// There are three ways to upload a file. You can either set Content if file is small, set Reader if file is large, -// or provide a local file path in File to upload it from your filesystem. -// -// Note that when using the Reader option, you *must* specify the Filename, otherwise the Slack API isn't happy. -type FileUploadParameters struct { - File string - Content string - Reader io.Reader - Filetype string - Filename string - Title string - InitialComment string - Channels []string - ThreadTimestamp string -} - -// GetFilesParameters contains all the parameters necessary (including the optional ones) for a GetFiles() request -type GetFilesParameters struct { - User string - Channel string - TimestampFrom JSONTime - TimestampTo JSONTime - Types string - Count int - Page int -} - -// ListFilesParameters contains all the parameters necessary (including the optional ones) for a ListFiles() request -type ListFilesParameters struct { - Limit int - User string - Channel string - Types string - Cursor string -} - -type fileResponseFull struct { - File `json:"file"` - Paging `json:"paging"` - Comments []Comment `json:"comments"` - Files []File `json:"files"` - Metadata ResponseMetadata `json:"response_metadata"` - - SlackResponse -} - -// NewGetFilesParameters provides an instance of GetFilesParameters with all the sane default values set -func NewGetFilesParameters() GetFilesParameters { - return GetFilesParameters{ - User: DEFAULT_FILES_USER, - Channel: DEFAULT_FILES_CHANNEL, - TimestampFrom: DEFAULT_FILES_TS_FROM, - TimestampTo: DEFAULT_FILES_TS_TO, - Types: DEFAULT_FILES_TYPES, - Count: DEFAULT_FILES_COUNT, - Page: DEFAULT_FILES_PAGE, - } -} - -func (api *Client) fileRequest(ctx context.Context, path string, values url.Values) (*fileResponseFull, error) { - response := &fileResponseFull{} - err := api.postMethod(ctx, path, values, response) - if err != nil { - return nil, err - } - - return response, response.Err() -} - -// GetFileInfo retrieves a file and related comments -func (api *Client) GetFileInfo(fileID string, count, page int) (*File, []Comment, *Paging, error) { - return api.GetFileInfoContext(context.Background(), fileID, count, page) -} - -// GetFileInfoContext retrieves a file and related comments with a custom context -func (api *Client) GetFileInfoContext(ctx context.Context, fileID string, count, page int) (*File, []Comment, *Paging, error) { - values := url.Values{ - "token": {api.token}, - "file": {fileID}, - "count": {strconv.Itoa(count)}, - "page": {strconv.Itoa(page)}, - } - - response, err := api.fileRequest(ctx, "files.info", values) - if err != nil { - return nil, nil, nil, err - } - return &response.File, response.Comments, &response.Paging, nil -} - -// GetFile retreives a given file from its private download URL -func (api *Client) GetFile(downloadURL string, writer io.Writer) error { - return downloadFile(api.httpclient, api.token, downloadURL, writer, api) -} - -// GetFiles retrieves all files according to the parameters given -func (api *Client) GetFiles(params GetFilesParameters) ([]File, *Paging, error) { - return api.GetFilesContext(context.Background(), params) -} - -// ListFiles retrieves all files according to the parameters given. Uses cursor based pagination. -func (api *Client) ListFiles(params ListFilesParameters) ([]File, *ListFilesParameters, error) { - return api.ListFilesContext(context.Background(), params) -} - -// ListFilesContext retrieves all files according to the parameters given with a custom context. Uses cursor based pagination. -func (api *Client) ListFilesContext(ctx context.Context, params ListFilesParameters) ([]File, *ListFilesParameters, error) { - values := url.Values{ - "token": {api.token}, - } - - if params.User != DEFAULT_FILES_USER { - values.Add("user", params.User) - } - if params.Channel != DEFAULT_FILES_CHANNEL { - values.Add("channel", params.Channel) - } - if params.Limit != DEFAULT_FILES_COUNT { - values.Add("limit", strconv.Itoa(params.Limit)) - } - if params.Cursor != "" { - values.Add("cursor", params.Cursor) - } - - response, err := api.fileRequest(ctx, "files.list", values) - if err != nil { - return nil, nil, err - } - - params.Cursor = response.Metadata.Cursor - - return response.Files, ¶ms, nil -} - -// GetFilesContext retrieves all files according to the parameters given with a custom context -func (api *Client) GetFilesContext(ctx context.Context, params GetFilesParameters) ([]File, *Paging, error) { - values := url.Values{ - "token": {api.token}, - } - if params.User != DEFAULT_FILES_USER { - values.Add("user", params.User) - } - if params.Channel != DEFAULT_FILES_CHANNEL { - values.Add("channel", params.Channel) - } - if params.TimestampFrom != DEFAULT_FILES_TS_FROM { - values.Add("ts_from", strconv.FormatInt(int64(params.TimestampFrom), 10)) - } - if params.TimestampTo != DEFAULT_FILES_TS_TO { - values.Add("ts_to", strconv.FormatInt(int64(params.TimestampTo), 10)) - } - if params.Types != DEFAULT_FILES_TYPES { - values.Add("types", params.Types) - } - if params.Count != DEFAULT_FILES_COUNT { - values.Add("count", strconv.Itoa(params.Count)) - } - if params.Page != DEFAULT_FILES_PAGE { - values.Add("page", strconv.Itoa(params.Page)) - } - - response, err := api.fileRequest(ctx, "files.list", values) - if err != nil { - return nil, nil, err - } - return response.Files, &response.Paging, nil -} - -// UploadFile uploads a file -func (api *Client) UploadFile(params FileUploadParameters) (file *File, err error) { - return api.UploadFileContext(context.Background(), params) -} - -// UploadFileContext uploads a file and setting a custom context -func (api *Client) UploadFileContext(ctx context.Context, params FileUploadParameters) (file *File, err error) { - // Test if user token is valid. This helps because client.Do doesn't like this for some reason. XXX: More - // investigation needed, but for now this will do. - _, err = api.AuthTest() - if err != nil { - return nil, err - } - response := &fileResponseFull{} - values := url.Values{ - "token": {api.token}, - } - if params.Filetype != "" { - values.Add("filetype", params.Filetype) - } - if params.Filename != "" { - values.Add("filename", params.Filename) - } - if params.Title != "" { - values.Add("title", params.Title) - } - if params.InitialComment != "" { - values.Add("initial_comment", params.InitialComment) - } - if params.ThreadTimestamp != "" { - values.Add("thread_ts", params.ThreadTimestamp) - } - if len(params.Channels) != 0 { - values.Add("channels", strings.Join(params.Channels, ",")) - } - if params.Content != "" { - values.Add("content", params.Content) - err = api.postMethod(ctx, "files.upload", values, response) - } else if params.File != "" { - err = postLocalWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.upload", params.File, "file", values, response, api) - } else if params.Reader != nil { - if params.Filename == "" { - return nil, fmt.Errorf("files.upload: FileUploadParameters.Filename is mandatory when using FileUploadParameters.Reader") - } - err = postWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.upload", params.Filename, "file", values, params.Reader, response, api) - } - - if err != nil { - return nil, err - } - - return &response.File, response.Err() -} - -// DeleteFileComment deletes a file's comment -func (api *Client) DeleteFileComment(commentID, fileID string) error { - return api.DeleteFileCommentContext(context.Background(), fileID, commentID) -} - -// DeleteFileCommentContext deletes a file's comment with a custom context -func (api *Client) DeleteFileCommentContext(ctx context.Context, fileID, commentID string) (err error) { - if fileID == "" || commentID == "" { - return ErrParametersMissing - } - - values := url.Values{ - "token": {api.token}, - "file": {fileID}, - "id": {commentID}, - } - _, err = api.fileRequest(ctx, "files.comments.delete", values) - return err -} - -// DeleteFile deletes a file -func (api *Client) DeleteFile(fileID string) error { - return api.DeleteFileContext(context.Background(), fileID) -} - -// DeleteFileContext deletes a file with a custom context -func (api *Client) DeleteFileContext(ctx context.Context, fileID string) (err error) { - values := url.Values{ - "token": {api.token}, - "file": {fileID}, - } - - _, err = api.fileRequest(ctx, "files.delete", values) - return err -} - -// RevokeFilePublicURL disables public/external sharing for a file -func (api *Client) RevokeFilePublicURL(fileID string) (*File, error) { - return api.RevokeFilePublicURLContext(context.Background(), fileID) -} - -// RevokeFilePublicURLContext disables public/external sharing for a file with a custom context -func (api *Client) RevokeFilePublicURLContext(ctx context.Context, fileID string) (*File, error) { - values := url.Values{ - "token": {api.token}, - "file": {fileID}, - } - - response, err := api.fileRequest(ctx, "files.revokePublicURL", values) - if err != nil { - return nil, err - } - return &response.File, nil -} - -// ShareFilePublicURL enabled public/external sharing for a file -func (api *Client) ShareFilePublicURL(fileID string) (*File, []Comment, *Paging, error) { - return api.ShareFilePublicURLContext(context.Background(), fileID) -} - -// ShareFilePublicURLContext enabled public/external sharing for a file with a custom context -func (api *Client) ShareFilePublicURLContext(ctx context.Context, fileID string) (*File, []Comment, *Paging, error) { - values := url.Values{ - "token": {api.token}, - "file": {fileID}, - } - - response, err := api.fileRequest(ctx, "files.sharedPublicURL", values) - if err != nil { - return nil, nil, nil, err - } - return &response.File, response.Comments, &response.Paging, nil -} |