diff --git a/bot.go b/bot.go index d44ae54..2fc190c 100644 --- a/bot.go +++ b/bot.go @@ -198,18 +198,7 @@ func (bot *BotAPI) UploadFiles(endpoint string, params Params, files []RequestFi return } - if f.Size != -1 { - io.Copy(part, f.Reader) - } else { - data, err := ioutil.ReadAll(f.Reader) - if err != nil { - w.CloseWithError(err) - return - } - - buf := bytes.NewBuffer(data) - io.Copy(part, buf) - } + io.Copy(part, f.Reader) case FileURL: val := string(f) if err := m.WriteField(file.Name, val); err != nil { diff --git a/bot_test.go b/bot_test.go index 9645efa..537dcc3 100644 --- a/bot_test.go +++ b/bot_test.go @@ -120,7 +120,7 @@ func TestSendWithNewPhotoWithFileReader(t *testing.T) { bot, _ := getBot(t) f, _ := os.Open("tests/image.jpg") - reader := FileReader{Name: "image.jpg", Reader: f, Size: -1} + reader := FileReader{Name: "image.jpg", Reader: f} msg := NewPhoto(ChatID, reader) msg.Caption = "Test" @@ -177,7 +177,7 @@ func TestSendNewPhotoToChannelFileReader(t *testing.T) { bot, _ := getBot(t) f, _ := os.Open("tests/image.jpg") - reader := FileReader{Name: "image.jpg", Reader: f, Size: -1} + reader := FileReader{Name: "image.jpg", Reader: f} msg := NewPhotoToChannel(Channel, reader) msg.Caption = "Test" diff --git a/configs.go b/configs.go index 2b15c16..925766f 100644 --- a/configs.go +++ b/configs.go @@ -375,10 +375,6 @@ func (config AnimationConfig) params() (Params, error) { return params, err } -func (config AnimationConfig) name() string { - return "animation" -} - func (config AnimationConfig) method() string { return "sendAnimation" } @@ -899,8 +895,15 @@ func (config WebhookConfig) params() (Params, error) { return params, err } -func (config WebhookConfig) name() string { - return "certificate" +func (config WebhookConfig) files() []RequestFile { + if config.Certificate != nil { + return []RequestFile{{ + Name: "certificate", + File: config.Certificate, + }} + } + + return nil } // RemoveWebhookConfig is a helper to remove a webhook. @@ -923,12 +926,9 @@ type FileBytes struct { } // FileReader contains information about a reader to upload as a File. -// If Size is -1, it will read the entire Reader into memory to -// calculate a Size. type FileReader struct { Name string Reader io.Reader - Size int64 } // FileURL is a URL to use as a file for a request. @@ -1642,15 +1642,14 @@ func (config SetStickerSetThumbConfig) params() (Params, error) { params["name"] = config.Name params.AddNonZero("user_id", config.UserID) - if thumb, ok := config.Thumb.(string); ok { - params["thumb"] = thumb - } - return params, nil } -func (config SetStickerSetThumbConfig) name() string { - return "thumb" +func (config SetStickerSetThumbConfig) files() []RequestFile { + return []RequestFile{{ + Name: "thumb", + File: config.Thumb, + }} } // SetChatStickerSetConfig allows you to set the sticker set for a supergroup. diff --git a/types_test.go b/types_test.go index 3b6c5be..354625c 100644 --- a/types_test.go +++ b/types_test.go @@ -349,4 +349,6 @@ var ( _ Fileable = (*NewStickerSetConfig)(nil) _ Fileable = (*AddStickerConfig)(nil) _ Fileable = (*MediaGroupConfig)(nil) + _ Fileable = (*WebhookConfig)(nil) + _ Fileable = (*SetStickerSetThumbConfig)(nil) )