add method GetFile and refactor code

pull/197/head
robatioor 6 years ago
parent e6cfaa8339
commit 5601dd0354

@ -877,14 +877,12 @@ func (b *Bot) FileByID(fileID string) (File, error) {
// Download saves the file from Telegram servers locally. // Download saves the file from Telegram servers locally.
// //
// Maximum file size to download is 20 MB. // Maximum file size to download is 20 MB.
func (b *Bot) Download(f *File, localFilename string) error { func (b *Bot) Download(file *File, localFilename string) error {
g, err := b.FileByID(f.FileID) reader, err := b.GetFile(file)
if err != nil { if err != nil {
return err return wrapSystem(err)
} }
defer reader.Close()
url := fmt.Sprintf("%s/file/bot%s/%s",
b.URL, b.Token, g.FilePath)
out, err := os.Create(localFilename) out, err := os.Create(localFilename)
if err != nil { if err != nil {
@ -892,23 +890,34 @@ func (b *Bot) Download(f *File, localFilename string) error {
} }
defer out.Close() defer out.Close()
resp, err := http.Get(url) _, err = io.Copy(out, reader)
if err != nil { if err != nil {
return wrapSystem(err) return wrapSystem(err)
} }
defer resp.Body.Close() file.FileLocal = localFilename
return nil
}
_, err = io.Copy(out, resp.Body) // GetFile from Telegram servers
func (b *Bot) GetFile(file *File) (io.ReadCloser, error) {
f, err := b.FileByID(file.FileID)
if err != nil { if err != nil {
return wrapSystem(err) return nil, err
} }
g.FileLocal = localFilename url := fmt.Sprintf("%s/file/bot%s/%s",
*f = g b.URL, b.Token, f.FilePath)
return nil resp, err := http.Get(url)
if err != nil {
return nil, err
} }
// set FilePath
*file = f
return resp.Body, nil
}
// StopLiveLocation should be called to stop broadcasting live message location // StopLiveLocation should be called to stop broadcasting live message location
// before Location.LivePeriod expires. // before Location.LivePeriod expires.
// //

Loading…
Cancel
Save