From baab7224a91e116d55b7fce7a5340f0354eacb90 Mon Sep 17 00:00:00 2001 From: Junya Hayashi Date: Sat, 5 Dec 2020 14:14:15 +0900 Subject: [PATCH 1/7] Support remote files API --- examples/remotefiles/remotefiles.go | 75 ++++++++ examples/remotefiles/slack-go.png | Bin 0 -> 152289 bytes remotefiles.go | 277 ++++++++++++++++++++++++++++ 3 files changed, 352 insertions(+) create mode 100644 examples/remotefiles/remotefiles.go create mode 100644 examples/remotefiles/slack-go.png create mode 100644 remotefiles.go diff --git a/examples/remotefiles/remotefiles.go b/examples/remotefiles/remotefiles.go new file mode 100644 index 000000000..b3d013f91 --- /dev/null +++ b/examples/remotefiles/remotefiles.go @@ -0,0 +1,75 @@ +package main + +import ( + "fmt" + "os" + + "github.com/slack-go/slack" +) + +func main() { + api := slack.New("YOUR_TOKEN_HERE") + r, err := os.Open("slack-go.png") + if err != nil { + fmt.Printf("%s\n", err) + return + } + defer r.Close() + remotefile, err := api.AddRemoteFile(slack.RemoteFileParameters{ + ExternalID: "slack-go", + ExternalURL: "https://github.com/slack-go/slack", + Title: "slack-go", + Filetype: "go", + IndexableFileContents: "golang, slack", + // PreviewImage: "slack-go.png", + PreviewImageReader: r, + }) + if err != nil { + fmt.Printf("add remote file failed: %s\n", err) + return + } + fmt.Printf("remote file: %v\n", remotefile) + + _, err = api.ShareRemoteFile([]string{"CPB8DC1CM"}, remotefile.ExternalID, "") + if err != nil { + fmt.Printf("share remote file failed: %s\n", err) + return + } + fmt.Printf("share remote file %s successfully.\n", remotefile.Name) + + remotefiles, _, err := api.ListRemoteFiles(slack.ListRemoteFilesParameters{ + Channel: "YOUR_CHANNEL_HERE", + }) + if err != nil { + fmt.Printf("list remote files failed: %s\n", err) + return + } + fmt.Printf("remote files: %v\n", remotefiles) + + remotefile, err = api.UpdateRemoteFile(remotefile.ID, slack.RemoteFileParameters{ + ExternalID: "slack-go", + ExternalURL: "https://github.com/slack-go/slack", + Title: "slack-go", + Filetype: "go", + IndexableFileContents: "golang, slack, github", + }) + if err != nil { + fmt.Printf("update remote file failed: %s\n", err) + return + } + fmt.Printf("remote file: %v\n", remotefile) + + info, err := api.GetRemoteFileInfo(remotefile.ExternalID, "") + if err != nil { + fmt.Printf("get remote file info failed: %s\n", err) + return + } + fmt.Printf("remote file info: %v\n", info) + + err = api.RemoveRemoteFile(remotefile.ExternalID, "") + if err != nil { + fmt.Printf("remove remote file failed: %s\n", err) + return + } + fmt.Printf("remote file %s deleted successfully.\n", remotefile.Name) +} diff --git a/examples/remotefiles/slack-go.png b/examples/remotefiles/slack-go.png new file mode 100644 index 0000000000000000000000000000000000000000..51d93bc674fe41dd8b9c82ec171be892823cf97b GIT binary patch literal 152289 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 aEo7a|CT#i%6YoEOpUw^a>y_8;hy4%sNO*q$ literal 0 HcmV?d00001 diff --git a/remotefiles.go b/remotefiles.go new file mode 100644 index 000000000..61ea48050 --- /dev/null +++ b/remotefiles.go @@ -0,0 +1,277 @@ +package slack + +import ( + "context" + "io" + "net/url" + "strconv" + "strings" +) + +const ( + DEFAULT_REMOTE_FILES_CHANNEL = "" + DEFAULT_REMOTE_FILES_TS_FROM = 0 + DEFAULT_REMOTE_FILES_TS_TO = -1 + DEFAULT_REMOTE_FILES_COUNT = 100 +) + +// RemoteFile contains all the information for a remote file +type RemoteFile 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"` + Filetype string `json:"filetype"` + PrettyType string `json:"pretty_type"` + User string `json:"user"` + Editable bool `json:"editable"` + Size int `json:"size"` + Mode string `json:"mode"` + IsExternal bool `json:"is_external"` + ExternalType string `json:"external_type"` + IsPublic bool `json:"is_public"` + PublicURLShared bool `json:"public_url_shared"` + DisplayAsBot bool `json:"display_as_bot"` + Username string `json:"username"` + URLPrivate string `json:"url_private"` + Permalink string `json:"permalink"` + CommentsCount int `json:"comments_count"` + IsStarred bool `json:"is_starred"` + Shares Share `json:"shares"` + Channels []string `json:"channels"` + Groups []string `json:"groups"` + IMs []string `json:"ims"` + ExternalID string `json:"external_id"` + ExternalURL string `json:"external_url"` + HasRichPreview bool `json:"has_rich_preview"` +} + +type RemoteFileParameters struct { + ExternalID string // required + ExternalURL string // required + Title string // required + Filetype string + IndexableFileContents string + PreviewImage string + PreviewImageReader io.Reader +} + +type ListRemoteFilesParameters struct { + Channel string + Cursor string + Limit int + TimestampFrom JSONTime + TimestampTo JSONTime +} + +type remoteFileResponseFull struct { + RemoteFile `json:"file"` + Paging `json:"paging"` + Files []RemoteFile `json:"files"` + Metadata ResponseMetadata `json:"response_metadata"` + SlackResponse +} + +func (api *Client) remoteFileRequest(ctx context.Context, path string, values url.Values) (*remoteFileResponseFull, error) { + response := &remoteFileResponseFull{} + err := api.postMethod(ctx, path, values, response) + if err != nil { + return nil, err + } + + return response, response.Err() +} + +// AddRemoteFile adds a remote file +func (api *Client) AddRemoteFile(params RemoteFileParameters) (remotefile *RemoteFile, err error) { + return api.AddRemoteFileContext(context.Background(), params) +} + +// AddRemoteFileContext adds a remote file and setting a custom context +func (api *Client) AddRemoteFileContext(ctx context.Context, params RemoteFileParameters) (remotefile *RemoteFile, 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 := &remoteFileResponseFull{} + values := url.Values{ + "token": {api.token}, + "external_id": {params.ExternalID}, + "external_url": {params.ExternalURL}, + "title": {params.Title}, + } + if params.Filetype != "" { + values.Add("filetype", params.Filetype) + } + if params.IndexableFileContents != "" { + values.Add("indexable_file_contents", params.IndexableFileContents) + } + if params.PreviewImage != "" { + err = postLocalWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.add", params.PreviewImage, "preview_image", values, response, api) + } else if params.PreviewImageReader != nil { + err = postWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.add", "preview.png", "preview_image", values, params.PreviewImageReader, response, api) + } else { + response, err = api.remoteFileRequest(ctx, "files.remote.add", values) + } + + if err != nil { + return nil, err + } + + return &response.RemoteFile, response.Err() +} + +// ListRemoteFiles retrieves all remote files according to the parameters given. Uses cursor based pagination. +func (api *Client) ListRemoteFiles(params ListRemoteFilesParameters) ([]RemoteFile, *ListRemoteFilesParameters, error) { + return api.ListRemoteFilesContext(context.Background(), params) +} + +// ListRemoteFilesContext retrieves all remote files according to the parameters given with a custom context. Uses cursor based pagination. +func (api *Client) ListRemoteFilesContext(ctx context.Context, params ListRemoteFilesParameters) ([]RemoteFile, *ListRemoteFilesParameters, error) { + values := url.Values{ + "token": {api.token}, + } + if params.Channel != DEFAULT_REMOTE_FILES_CHANNEL { + values.Add("channel", params.Channel) + } + if params.TimestampFrom != DEFAULT_REMOTE_FILES_TS_FROM { + values.Add("ts_from", strconv.FormatInt(int64(params.TimestampFrom), 10)) + } + if params.TimestampTo != DEFAULT_REMOTE_FILES_TS_TO { + values.Add("ts_to", strconv.FormatInt(int64(params.TimestampTo), 10)) + } + if params.Limit != DEFAULT_REMOTE_FILES_COUNT { + values.Add("limit", strconv.Itoa(params.Limit)) + } + if params.Cursor != "" { + values.Add("cursor", params.Cursor) + } + + response, err := api.remoteFileRequest(ctx, "files.remote.list", values) + if err != nil { + return nil, nil, err + } + + params.Cursor = response.Metadata.Cursor + + return response.Files, ¶ms, nil +} + +// GetRemoteFileInfo retrieves the complete remote file information. +func (api *Client) GetRemoteFileInfo(externalID, fileID string) (remotefile *RemoteFile, err error) { + return api.GetRemoteFileInfoContext(context.Background(), externalID, fileID) +} + +// GetRemoteFileInfoContext retrieves the complete remote file information given with a custom context. +func (api *Client) GetRemoteFileInfoContext(ctx context.Context, externalID, fileID string) (remotefile *RemoteFile, err error) { + values := url.Values{ + "token": {api.token}, + } + if fileID != "" { + values.Add("file", fileID) + } + if externalID != "" { + values.Add("external_id", externalID) + } + response, err := api.remoteFileRequest(ctx, "files.remote.info", values) + if err != nil { + return nil, err + } + return &response.RemoteFile, err +} + +// ShareRemoteFile shares a remote file to channels +func (api *Client) ShareRemoteFile(channels []string, externalID, fileID string) (file *RemoteFile, err error) { + return api.ShareRemoteFileContext(context.Background(), channels, externalID, fileID) +} + +// ShareRemoteFileContext shares a remote file to channels with a custom context +func (api *Client) ShareRemoteFileContext(ctx context.Context, channels []string, externalID, fileID string) (file *RemoteFile, err error) { + values := url.Values{ + "token": {api.token}, + "channels": {strings.Join(channels, ",")}, + } + if fileID != "" { + values.Add("file", fileID) + } + if externalID != "" { + values.Add("external_id", externalID) + } + response, err := api.remoteFileRequest(ctx, "files.remote.share", values) + if err != nil { + return nil, err + } + return &response.RemoteFile, err +} + +// UpdateRemoteFile updates a remote file +func (api *Client) UpdateRemoteFile(fileID string, params RemoteFileParameters) (remotefile *RemoteFile, err error) { + return api.UpdateRemoteFileContext(context.Background(), fileID, params) +} + +// UpdateRemoteFileContext updates a remote file with a custom context +func (api *Client) UpdateRemoteFileContext(ctx context.Context, fileID string, params RemoteFileParameters) (remotefile *RemoteFile, 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 := &remoteFileResponseFull{} + values := url.Values{ + "token": {api.token}, + } + if fileID != "" { + values.Add("file", fileID) + } + if params.ExternalID != "" { + values.Add("external_id", params.ExternalID) + } + if params.ExternalURL != "" { + values.Add("external_url", params.ExternalURL) + } + if params.Title != "" { + values.Add("title", params.Title) + } + if params.Filetype != "" { + values.Add("filetype", params.Filetype) + } + if params.IndexableFileContents != "" { + values.Add("indexable_file_contents", params.IndexableFileContents) + } + if params.PreviewImageReader != nil { + err = postWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.add", "preview.png", "preview_image", values, params.PreviewImageReader, response, api) + } else { + response, err = api.remoteFileRequest(ctx, "files.remote.add", values) + } + + if err != nil { + return nil, err + } + + return &response.RemoteFile, response.Err() +} + +// RemoveRemoteFile removes a remote file +func (api *Client) RemoveRemoteFile(externalID, fileID string) (err error) { + return api.RemoveRemoteFileContext(context.Background(), externalID, fileID) +} + +// RemoveRemoteFileContext removes a remote file with a custom context +func (api *Client) RemoveRemoteFileContext(ctx context.Context, externalID, fileID string) (err error) { + values := url.Values{ + "token": {api.token}, + } + if fileID != "" { + values.Add("file", fileID) + } + if externalID != "" { + values.Add("external_id", externalID) + } + _, err = api.remoteFileRequest(ctx, "files.remote.remove", values) + return err +} From 46dc7e1f311b35ea6e6a01c88ad34d6907e39800 Mon Sep 17 00:00:00 2001 From: Junya Hayashi Date: Fri, 1 Jan 2021 00:40:27 +0900 Subject: [PATCH 2/7] remotefiles: remove redundant field from remoteFileResponseFull --- remotefiles.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/remotefiles.go b/remotefiles.go index 61ea48050..06e33315d 100644 --- a/remotefiles.go +++ b/remotefiles.go @@ -69,8 +69,7 @@ type ListRemoteFilesParameters struct { type remoteFileResponseFull struct { RemoteFile `json:"file"` Paging `json:"paging"` - Files []RemoteFile `json:"files"` - Metadata ResponseMetadata `json:"response_metadata"` + Files []RemoteFile `json:"files"` SlackResponse } @@ -156,7 +155,7 @@ func (api *Client) ListRemoteFilesContext(ctx context.Context, params ListRemote return nil, nil, err } - params.Cursor = response.Metadata.Cursor + params.Cursor = response.SlackResponse.ResponseMetadata.Cursor return response.Files, ¶ms, nil } From 3eb3ab316abff0e539fe941ee849a8bdcb576032 Mon Sep 17 00:00:00 2001 From: Junya Hayashi Date: Fri, 1 Jan 2021 20:56:25 +0900 Subject: [PATCH 3/7] remotefiles: add tests --- remotefiles.go | 36 +++++--- remotefiles_test.go | 194 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 217 insertions(+), 13 deletions(-) create mode 100644 remotefiles_test.go diff --git a/remotefiles.go b/remotefiles.go index 06e33315d..5ff6f46cf 100644 --- a/remotefiles.go +++ b/remotefiles.go @@ -2,6 +2,7 @@ package slack import ( "context" + "fmt" "io" "net/url" "strconv" @@ -90,11 +91,8 @@ func (api *Client) AddRemoteFile(params RemoteFileParameters) (remotefile *Remot // AddRemoteFileContext adds a remote file and setting a custom context func (api *Client) AddRemoteFileContext(ctx context.Context, params RemoteFileParameters) (remotefile *RemoteFile, 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 + if params.ExternalID == "" || params.ExternalURL == "" || params.Title == "" { + return nil, ErrParametersMissing } response := &remoteFileResponseFull{} values := url.Values{ @@ -167,6 +165,12 @@ func (api *Client) GetRemoteFileInfo(externalID, fileID string) (remotefile *Rem // GetRemoteFileInfoContext retrieves the complete remote file information given with a custom context. func (api *Client) GetRemoteFileInfoContext(ctx context.Context, externalID, fileID string) (remotefile *RemoteFile, err error) { + if fileID == "" && externalID == "" { + return nil, fmt.Errorf("either externalID or fileID is required") + } + if fileID != "" && externalID != "" { + return nil, fmt.Errorf("don't provide both externalID and fileID") + } values := url.Values{ "token": {api.token}, } @@ -190,6 +194,12 @@ func (api *Client) ShareRemoteFile(channels []string, externalID, fileID string) // ShareRemoteFileContext shares a remote file to channels with a custom context func (api *Client) ShareRemoteFileContext(ctx context.Context, channels []string, externalID, fileID string) (file *RemoteFile, err error) { + if channels == nil || len(channels) == 0 { + return nil, ErrParametersMissing + } + if fileID == "" && externalID == "" { + return nil, fmt.Errorf("either externalID or fileID is required") + } values := url.Values{ "token": {api.token}, "channels": {strings.Join(channels, ",")}, @@ -214,12 +224,6 @@ func (api *Client) UpdateRemoteFile(fileID string, params RemoteFileParameters) // UpdateRemoteFileContext updates a remote file with a custom context func (api *Client) UpdateRemoteFileContext(ctx context.Context, fileID string, params RemoteFileParameters) (remotefile *RemoteFile, 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 := &remoteFileResponseFull{} values := url.Values{ "token": {api.token}, @@ -243,9 +247,9 @@ func (api *Client) UpdateRemoteFileContext(ctx context.Context, fileID string, p values.Add("indexable_file_contents", params.IndexableFileContents) } if params.PreviewImageReader != nil { - err = postWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.add", "preview.png", "preview_image", values, params.PreviewImageReader, response, api) + err = postWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.update", "preview.png", "preview_image", values, params.PreviewImageReader, response, api) } else { - response, err = api.remoteFileRequest(ctx, "files.remote.add", values) + response, err = api.remoteFileRequest(ctx, "files.remote.update", values) } if err != nil { @@ -262,6 +266,12 @@ func (api *Client) RemoveRemoteFile(externalID, fileID string) (err error) { // RemoveRemoteFileContext removes a remote file with a custom context func (api *Client) RemoveRemoteFileContext(ctx context.Context, externalID, fileID string) (err error) { + if fileID == "" && externalID == "" { + return fmt.Errorf("either externalID or fileID is required") + } + if fileID != "" && externalID != "" { + return fmt.Errorf("don't provide both externalID and fileID") + } values := url.Values{ "token": {api.token}, } diff --git a/remotefiles_test.go b/remotefiles_test.go new file mode 100644 index 000000000..68e12a38d --- /dev/null +++ b/remotefiles_test.go @@ -0,0 +1,194 @@ +package slack + +import ( + "encoding/json" + "net/http" + "strings" + "testing" +) + +func addRemoteFileHandler(rw http.ResponseWriter, r *http.Request) { + rw.Header().Set("Content-Type", "application/json") + response, _ := json.Marshal(remoteFileResponseFull{ + SlackResponse: SlackResponse{Ok: true}}) + rw.Write(response) +} + +func TestAddRemoteFile(t *testing.T) { + http.HandleFunc("/files.remote.add", addRemoteFileHandler) + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + params := RemoteFileParameters{ + ExternalID: "externalID", + ExternalURL: "http://example.com/", + Title: "example", + } + if _, err := api.AddRemoteFile(params); err != nil { + t.Errorf("Unexpected error: %s", err) + } +} + +func TestAddRemoteFileWithoutTitle(t *testing.T) { + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + params := RemoteFileParameters{ + ExternalID: "externalID", + ExternalURL: "http://example.com/", + } + if _, err := api.AddRemoteFile(params); err != ErrParametersMissing { + t.Errorf("Expected ErrParametersMissing. got %s", err) + } +} + +func listRemoteFileHandler(rw http.ResponseWriter, r *http.Request) { + rw.Header().Set("Content-Type", "application/json") + response, _ := json.Marshal(remoteFileResponseFull{ + SlackResponse: SlackResponse{Ok: true}}) + rw.Write(response) +} + +func TestListRemoteFile(t *testing.T) { + http.HandleFunc("/files.remote.list", listRemoteFileHandler) + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + params := ListRemoteFilesParameters{} + if _, _, err := api.ListRemoteFiles(params); err != nil { + t.Errorf("Unexpected error: %s", err) + } +} + +func getRemoteFileInfoHandler(rw http.ResponseWriter, r *http.Request) { + rw.Header().Set("Content-Type", "application/json") + response, _ := json.Marshal(remoteFileResponseFull{ + SlackResponse: SlackResponse{Ok: true}}) + rw.Write(response) +} + +func TestGetRemoteFileInfo(t *testing.T) { + http.HandleFunc("/files.remote.info", getRemoteFileInfoHandler) + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + if _, err := api.GetRemoteFileInfo("ExternalID", ""); err != nil { + t.Errorf("Unexpected error: %s", err) + } +} + +func TestGetRemoteFileInfoWithoutID(t *testing.T) { + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + _, err := api.GetRemoteFileInfo("", "") + if err == nil { + t.Fatal("Expected error when both externalID and fileID is not provided, instead got nil") + } + if !strings.Contains(err.Error(), "either externalID or fileID is required") { + t.Errorf("Error message should mention a required field") + } +} + +func TestGetRemoteFileInfoWithFileIDAndExternalID(t *testing.T) { + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + _, err := api.GetRemoteFileInfo("ExternalID", "FileID") + if err == nil { + t.Fatal("Expected error when both externalID and fileID are both provided, instead got nil") + } + if !strings.Contains(err.Error(), "don't provide both externalID and fileID") { + t.Errorf("Error message should mention don't providing both externalID and fileID") + } +} + +func shareRemoteFileHandler(rw http.ResponseWriter, r *http.Request) { + rw.Header().Set("Content-Type", "application/json") + response, _ := json.Marshal(remoteFileResponseFull{ + SlackResponse: SlackResponse{Ok: true}}) + rw.Write(response) +} + +func TestShareRemoteFile(t *testing.T) { + http.HandleFunc("/files.remote.share", shareRemoteFileHandler) + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + if _, err := api.ShareRemoteFile([]string{"channel"}, "ExternalID", ""); err != nil { + t.Errorf("Unexpected error: %s", err) + } +} + +func TestShareRemoteFileWithoutChannels(t *testing.T) { + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + if _, err := api.ShareRemoteFile([]string{}, "ExternalID", ""); err != ErrParametersMissing { + t.Errorf("Expected ErrParametersMissing. got %s", err) + } +} + +func TestShareRemoteFileWithoutID(t *testing.T) { + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + _, err := api.ShareRemoteFile([]string{"channel"}, "", "") + if err == nil { + t.Fatal("Expected error when both externalID and fileID is not provided, instead got nil") + } + if !strings.Contains(err.Error(), "either externalID or fileID is required") { + t.Errorf("Error message should mention a required field") + } +} + +func updateRemoteFileHandler(rw http.ResponseWriter, r *http.Request) { + rw.Header().Set("Content-Type", "application/json") + response, _ := json.Marshal(remoteFileResponseFull{ + SlackResponse: SlackResponse{Ok: true}}) + rw.Write(response) +} + +func TestUpdateRemoteFile(t *testing.T) { + http.HandleFunc("/files.remote.update", updateRemoteFileHandler) + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + params := RemoteFileParameters{ + ExternalURL: "http://example.com/", + Title: "example", + } + if _, err := api.UpdateRemoteFile("fileID", params); err != nil { + t.Errorf("Unexpected error: %s", err) + } +} + +func removeRemoteFileHandler(rw http.ResponseWriter, r *http.Request) { + rw.Header().Set("Content-Type", "application/json") + response, _ := json.Marshal(remoteFileResponseFull{ + SlackResponse: SlackResponse{Ok: true}}) + rw.Write(response) +} + +func TestRemoveRemoteFile(t *testing.T) { + http.HandleFunc("/files.remote.remove", removeRemoteFileHandler) + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + if err := api.RemoveRemoteFile("ExternalID", ""); err != nil { + t.Errorf("Unexpected error: %s", err) + } +} + +func TestRemoveRemoteFileWithoutID(t *testing.T) { + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + err := api.RemoveRemoteFile("", "") + if err == nil { + t.Fatal("Expected error when both externalID and fileID is not provided, instead got nil") + } + if !strings.Contains(err.Error(), "either externalID or fileID is required") { + t.Errorf("Error message should mention a required field") + } +} + +func TestRemoveRemoteFileWithFileIDAndExternalID(t *testing.T) { + once.Do(startServer) + api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) + err := api.RemoveRemoteFile("ExternalID", "FileID") + if err == nil { + t.Fatal("Expected error when both externalID and fileID are both provided, instead got nil") + } + if !strings.Contains(err.Error(), "don't provide both externalID and fileID") { + t.Errorf("Error message should mention don't providing both externalID and fileID") + } +} From defe396d4061cfbf29f0c15df93cb71e4e2cb757 Mon Sep 17 00:00:00 2001 From: Daniel Levi-Minzi Date: Thu, 21 Apr 2022 16:21:17 -0400 Subject: [PATCH 4/7] Updated some comments and updated usage of postLocalWithMultipartResponse and postWithMultipartResponse --- remotefiles.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/remotefiles.go b/remotefiles.go index 5ff6f46cf..a4f61d7da 100644 --- a/remotefiles.go +++ b/remotefiles.go @@ -17,6 +17,7 @@ const ( ) // RemoteFile contains all the information for a remote file +// More information can be found here: https://api.slack.com/messaging/files/remote type RemoteFile struct { ID string `json:"id"` Created JSONTime `json:"created"` @@ -49,6 +50,12 @@ type RemoteFile struct { HasRichPreview bool `json:"has_rich_preview"` } +// RemoteFileParameters contains required and optional parameters for a remote file. +// +// ExternalID is a user defined GUID, ExternalURL is where the remote file can be accessed, +// and Title is the name of the file. +// +// More information can be found here: https://api.slack.com/methods/files.remote.add type RemoteFileParameters struct { ExternalID string // required ExternalURL string // required @@ -84,8 +91,8 @@ func (api *Client) remoteFileRequest(ctx context.Context, path string, values ur return response, response.Err() } -// AddRemoteFile adds a remote file -func (api *Client) AddRemoteFile(params RemoteFileParameters) (remotefile *RemoteFile, err error) { +// AddRemoteFile adds a remote file. Unlike regular files, remote files must be explicitly shared. +func (api *Client) AddRemoteFile(params RemoteFileParameters) (*RemoteFile, error) { return api.AddRemoteFileContext(context.Background(), params) } @@ -108,9 +115,9 @@ func (api *Client) AddRemoteFileContext(ctx context.Context, params RemoteFilePa values.Add("indexable_file_contents", params.IndexableFileContents) } if params.PreviewImage != "" { - err = postLocalWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.add", params.PreviewImage, "preview_image", values, response, api) + err = postLocalWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.add", params.PreviewImage, "preview_image", api.token, values, response, api) } else if params.PreviewImageReader != nil { - err = postWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.add", "preview.png", "preview_image", values, params.PreviewImageReader, response, api) + err = postWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.add", "preview.png", "preview_image", api.token, values, params.PreviewImageReader, response, api) } else { response, err = api.remoteFileRequest(ctx, "files.remote.add", values) } @@ -247,7 +254,7 @@ func (api *Client) UpdateRemoteFileContext(ctx context.Context, fileID string, p values.Add("indexable_file_contents", params.IndexableFileContents) } if params.PreviewImageReader != nil { - err = postWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.update", "preview.png", "preview_image", values, params.PreviewImageReader, response, api) + err = postWithMultipartResponse(ctx, api.httpclient, api.endpoint+"files.remote.update", "preview.png", "preview_image", api.token, values, params.PreviewImageReader, response, api) } else { response, err = api.remoteFileRequest(ctx, "files.remote.update", values) } From c03f7444c5e45a57525d08381134ef5b86ac3457 Mon Sep 17 00:00:00 2001 From: Daniel Levi-Minzi Date: Fri, 22 Apr 2022 09:06:02 -0400 Subject: [PATCH 5/7] remove ListRemoteFileParameters from return --- remotefiles.go | 8 ++++---- remotefiles_test.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/remotefiles.go b/remotefiles.go index a4f61d7da..370929884 100644 --- a/remotefiles.go +++ b/remotefiles.go @@ -130,12 +130,12 @@ func (api *Client) AddRemoteFileContext(ctx context.Context, params RemoteFilePa } // ListRemoteFiles retrieves all remote files according to the parameters given. Uses cursor based pagination. -func (api *Client) ListRemoteFiles(params ListRemoteFilesParameters) ([]RemoteFile, *ListRemoteFilesParameters, error) { +func (api *Client) ListRemoteFiles(params ListRemoteFilesParameters) ([]RemoteFile, error) { return api.ListRemoteFilesContext(context.Background(), params) } // ListRemoteFilesContext retrieves all remote files according to the parameters given with a custom context. Uses cursor based pagination. -func (api *Client) ListRemoteFilesContext(ctx context.Context, params ListRemoteFilesParameters) ([]RemoteFile, *ListRemoteFilesParameters, error) { +func (api *Client) ListRemoteFilesContext(ctx context.Context, params ListRemoteFilesParameters) ([]RemoteFile, error) { values := url.Values{ "token": {api.token}, } @@ -157,12 +157,12 @@ func (api *Client) ListRemoteFilesContext(ctx context.Context, params ListRemote response, err := api.remoteFileRequest(ctx, "files.remote.list", values) if err != nil { - return nil, nil, err + return nil, err } params.Cursor = response.SlackResponse.ResponseMetadata.Cursor - return response.Files, ¶ms, nil + return response.Files, nil } // GetRemoteFileInfo retrieves the complete remote file information. diff --git a/remotefiles_test.go b/remotefiles_test.go index 68e12a38d..4744b5cbe 100644 --- a/remotefiles_test.go +++ b/remotefiles_test.go @@ -52,7 +52,7 @@ func TestListRemoteFile(t *testing.T) { once.Do(startServer) api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/")) params := ListRemoteFilesParameters{} - if _, _, err := api.ListRemoteFiles(params); err != nil { + if _, err := api.ListRemoteFiles(params); err != nil { t.Errorf("Unexpected error: %s", err) } } From 97e1ddeeeff5ae1542daa64aa31543bb7aa07390 Mon Sep 17 00:00:00 2001 From: Daniel Levi-Minzi Date: Sat, 23 Apr 2022 13:34:20 -0400 Subject: [PATCH 6/7] updated documentation --- remotefiles.go | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/remotefiles.go b/remotefiles.go index 370929884..8a908a8f3 100644 --- a/remotefiles.go +++ b/remotefiles.go @@ -17,7 +17,8 @@ const ( ) // RemoteFile contains all the information for a remote file -// More information can be found here: https://api.slack.com/messaging/files/remote +// For more details: +// https://api.slack.com/messaging/files/remote type RemoteFile struct { ID string `json:"id"` Created JSONTime `json:"created"` @@ -55,7 +56,8 @@ type RemoteFile struct { // ExternalID is a user defined GUID, ExternalURL is where the remote file can be accessed, // and Title is the name of the file. // -// More information can be found here: https://api.slack.com/methods/files.remote.add +// For more details: +// https://api.slack.com/methods/files.remote.add type RemoteFileParameters struct { ExternalID string // required ExternalURL string // required @@ -66,6 +68,9 @@ type RemoteFileParameters struct { PreviewImageReader io.Reader } +// ListRemoteFilesParameters contains arguments for the ListRemoteFiles method. +// For more details: +// https://api.slack.com/methods/files.remote.list type ListRemoteFilesParameters struct { Channel string Cursor string @@ -92,11 +97,14 @@ func (api *Client) remoteFileRequest(ctx context.Context, path string, values ur } // AddRemoteFile adds a remote file. Unlike regular files, remote files must be explicitly shared. +// For more details: +// https://api.slack.com/methods/files.remote.add func (api *Client) AddRemoteFile(params RemoteFileParameters) (*RemoteFile, error) { return api.AddRemoteFileContext(context.Background(), params) } // AddRemoteFileContext adds a remote file and setting a custom context +// For more details see the AddRemoteFile documentation. func (api *Client) AddRemoteFileContext(ctx context.Context, params RemoteFileParameters) (remotefile *RemoteFile, err error) { if params.ExternalID == "" || params.ExternalURL == "" || params.Title == "" { return nil, ErrParametersMissing @@ -130,11 +138,14 @@ func (api *Client) AddRemoteFileContext(ctx context.Context, params RemoteFilePa } // ListRemoteFiles retrieves all remote files according to the parameters given. Uses cursor based pagination. +// For more details: +// https://api.slack.com/methods/files.remote.list func (api *Client) ListRemoteFiles(params ListRemoteFilesParameters) ([]RemoteFile, error) { return api.ListRemoteFilesContext(context.Background(), params) } // ListRemoteFilesContext retrieves all remote files according to the parameters given with a custom context. Uses cursor based pagination. +// For more details see the ListRemoteFiles documentation. func (api *Client) ListRemoteFilesContext(ctx context.Context, params ListRemoteFilesParameters) ([]RemoteFile, error) { values := url.Values{ "token": {api.token}, @@ -166,11 +177,14 @@ func (api *Client) ListRemoteFilesContext(ctx context.Context, params ListRemote } // GetRemoteFileInfo retrieves the complete remote file information. +// For more details: +// https://api.slack.com/methods/files.remote.info func (api *Client) GetRemoteFileInfo(externalID, fileID string) (remotefile *RemoteFile, err error) { return api.GetRemoteFileInfoContext(context.Background(), externalID, fileID) } // GetRemoteFileInfoContext retrieves the complete remote file information given with a custom context. +// For more details see the GetRemoteFileInfo documentation. func (api *Client) GetRemoteFileInfoContext(ctx context.Context, externalID, fileID string) (remotefile *RemoteFile, err error) { if fileID == "" && externalID == "" { return nil, fmt.Errorf("either externalID or fileID is required") @@ -195,11 +209,14 @@ func (api *Client) GetRemoteFileInfoContext(ctx context.Context, externalID, fil } // ShareRemoteFile shares a remote file to channels +// For more details: +// https://api.slack.com/methods/files.remote.share func (api *Client) ShareRemoteFile(channels []string, externalID, fileID string) (file *RemoteFile, err error) { return api.ShareRemoteFileContext(context.Background(), channels, externalID, fileID) } -// ShareRemoteFileContext shares a remote file to channels with a custom context +// ShareRemoteFileContext shares a remote file to channels with a custom context. +// For more details see the ShareRemoteFile documentation. func (api *Client) ShareRemoteFileContext(ctx context.Context, channels []string, externalID, fileID string) (file *RemoteFile, err error) { if channels == nil || len(channels) == 0 { return nil, ErrParametersMissing @@ -225,11 +242,14 @@ func (api *Client) ShareRemoteFileContext(ctx context.Context, channels []string } // UpdateRemoteFile updates a remote file +// For more details: +// https://api.slack.com/methods/files.remote.update func (api *Client) UpdateRemoteFile(fileID string, params RemoteFileParameters) (remotefile *RemoteFile, err error) { return api.UpdateRemoteFileContext(context.Background(), fileID, params) } // UpdateRemoteFileContext updates a remote file with a custom context +// For more details see the UpdateRemoteFile documentation. func (api *Client) UpdateRemoteFileContext(ctx context.Context, fileID string, params RemoteFileParameters) (remotefile *RemoteFile, err error) { response := &remoteFileResponseFull{} values := url.Values{ @@ -266,12 +286,15 @@ func (api *Client) UpdateRemoteFileContext(ctx context.Context, fileID string, p return &response.RemoteFile, response.Err() } -// RemoveRemoteFile removes a remote file +// RemoveRemoteFile removes a remote file. +// For more details: +// https://api.slack.com/methods/files.remote.remove func (api *Client) RemoveRemoteFile(externalID, fileID string) (err error) { return api.RemoveRemoteFileContext(context.Background(), externalID, fileID) } // RemoveRemoteFileContext removes a remote file with a custom context +// For more information see the RemoveRemoteFiles documentation. func (api *Client) RemoveRemoteFileContext(ctx context.Context, externalID, fileID string) (err error) { if fileID == "" && externalID == "" { return fmt.Errorf("either externalID or fileID is required") From 48cd387cd1dad2bf81aca59a15467299a9b0cb6e Mon Sep 17 00:00:00 2001 From: Daniel Levi-Minzi Date: Sun, 24 Apr 2022 10:32:51 -0400 Subject: [PATCH 7/7] fixed broken example --- examples/remotefiles/remotefiles.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/remotefiles/remotefiles.go b/examples/remotefiles/remotefiles.go index b3d013f91..53569e19c 100644 --- a/examples/remotefiles/remotefiles.go +++ b/examples/remotefiles/remotefiles.go @@ -37,7 +37,7 @@ func main() { } fmt.Printf("share remote file %s successfully.\n", remotefile.Name) - remotefiles, _, err := api.ListRemoteFiles(slack.ListRemoteFilesParameters{ + remotefiles, err := api.ListRemoteFiles(slack.ListRemoteFilesParameters{ Channel: "YOUR_CHANNEL_HERE", }) if err != nil {