all repos — telegram-bot-api @ e680fa5288b4f37d1b01f57663bea2f7e51d9b77

Golang bindings for the Telegram Bot API

Merge pull request #339 from soluchok/http_client_interface

feat: Replaces *http.Client with an interface
Kirill Zhuharev zhuharev@users.noreply.github.com
Sun, 24 May 2020 13:51:26 +0300
commit

e680fa5288b4f37d1b01f57663bea2f7e51d9b77

parent

5e339ed016b0c7349c092f9fc0ecdf9e18c5f963

1 files changed, 14 insertions(+), 4 deletions(-)

jump to
M bot.gobot.go

@@ -19,14 +19,18 @@

"github.com/technoweenie/multipartstreamer" ) +type HttpClient interface { + Do(req *http.Request) (*http.Response, error) +} + // BotAPI allows you to interact with the Telegram Bot API. type BotAPI struct { Token string `json:"token"` Debug bool `json:"debug"` Buffer int `json:"buffer"` - Self User `json:"-"` - Client *http.Client `json:"-"` + Self User `json:"-"` + Client HttpClient `json:"-"` shutdownChannel chan interface{} apiEndpoint string

@@ -51,7 +55,7 @@ // NewBotAPIWithClient creates a new BotAPI instance

// and allows you to pass a http.Client. // // It requires a token, provided by @BotFather on Telegram and API endpoint. -func NewBotAPIWithClient(token, apiEndpoint string, client *http.Client) (*BotAPI, error) { +func NewBotAPIWithClient(token, apiEndpoint string, client HttpClient) (*BotAPI, error) { bot := &BotAPI{ Token: token, Client: client,

@@ -79,7 +83,13 @@ // MakeRequest makes a request to a specific endpoint with our token.

func (bot *BotAPI) MakeRequest(endpoint string, params url.Values) (APIResponse, error) { method := fmt.Sprintf(bot.apiEndpoint, bot.Token, endpoint) - resp, err := bot.Client.PostForm(method, params) + req, err := http.NewRequest("POST", method, strings.NewReader(params.Encode())) + if err != nil { + return APIResponse{}, err + } + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + + resp, err := bot.Client.Do(req) if err != nil { return APIResponse{}, err }