From a0a678302e8953531aa87a6a7e97a395c8954ada Mon Sep 17 00:00:00 2001 From: Denis Orlikhin Date: Wed, 28 Nov 2018 19:06:56 +0300 Subject: [PATCH 1/3] fix uploads by URL and fileId, should be the same as in createNewStickerSet --- configs.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/configs.go b/configs.go index 08a2609..ee6074c 100644 --- a/configs.go +++ b/configs.go @@ -1417,7 +1417,9 @@ func (config AddStickerConfig) getFile() interface{} { } func (config AddStickerConfig) useExistingFile() bool { - return false + _, ok := config.PNGSticker.(string) + + return ok } // SetStickerPositionConfig allows you to change the position of a sticker in a set. From 5d997a78c879ebd88fc00ae423c28eec33dd3a89 Mon Sep 17 00:00:00 2001 From: Denis Orlikhin Date: Thu, 6 Dec 2018 14:32:25 +0300 Subject: [PATCH 2/3] fix uploads by URL and fileId for UploadStickerConfig too, should be the same as in createNewStickerSet --- configs.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/configs.go b/configs.go index ee6074c..e97bdca 100644 --- a/configs.go +++ b/configs.go @@ -1327,7 +1327,9 @@ func (config UploadStickerConfig) getFile() interface{} { } func (config UploadStickerConfig) useExistingFile() bool { - return false + _, ok := config.PNGSticker.(string) + + return ok } // NewStickerSetConfig allows creating a new sticker set. From cb3a14a3b5d4216fd32fd6554cf3477616c697ed Mon Sep 17 00:00:00 2001 From: Denis Orlikhin Date: Sat, 8 Dec 2018 21:17:07 +0300 Subject: [PATCH 3/3] fix error handling for uploadFile calls --- bot.go | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/bot.go b/bot.go index 7766346..c5a4fee 100644 --- a/bot.go +++ b/bot.go @@ -208,30 +208,33 @@ func (bot *BotAPI) UploadFile(endpoint string, params Params, fieldname string, ms.SetupRequest(req) - res, err := bot.Client.Do(req) + resp, err := bot.Client.Do(req) if err != nil { return APIResponse{}, err } - defer res.Body.Close() + defer resp.Body.Close() - bytes, err := ioutil.ReadAll(res.Body) + var apiResp APIResponse + bytes, err := bot.decodeAPIResponse(resp.Body, &apiResp) if err != nil { - return APIResponse{}, err + return apiResp, err } if bot.Debug { log.Printf("Endpoint: %s, response: %s\n", endpoint, string(bytes)) } - var apiResp APIResponse - - err = json.Unmarshal(bytes, &apiResp) - if err != nil { - return APIResponse{}, err - } - if !apiResp.Ok { - return APIResponse{}, errors.New(apiResp.Description) + var parameters ResponseParameters + + if apiResp.Parameters != nil { + parameters = *apiResp.Parameters + } + + return apiResp, Error{ + Message: apiResp.Description, + ResponseParameters: parameters, + } } return apiResp, nil