From c0c292acad51431bf3516c1394371a6b9fa11508 Mon Sep 17 00:00:00 2001 From: "a.muradyan" Date: Tue, 26 Oct 2021 12:37:00 +0300 Subject: [PATCH 1/4] Add context to client request --- client.go | 11 ++++++++--- client_test.go | 3 ++- updates.go | 8 ++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/client.go b/client.go index dd997c2..ed6afc2 100644 --- a/client.go +++ b/client.go @@ -2,6 +2,7 @@ package botgolang import ( "bytes" + "context" "encoding/json" "fmt" "io" @@ -23,6 +24,10 @@ type Client struct { } func (c *Client) Do(path string, params url.Values, file *os.File) ([]byte, error) { + return c.DoWithContext(context.Background(), path, params, file) +} + +func (c *Client) DoWithContext(ctx context.Context, path string, params url.Values, file *os.File) ([]byte, error) { apiURL, err := url.Parse(c.baseURL + path) params.Set("token", c.token) @@ -31,7 +36,7 @@ func (c *Client) Do(path string, params url.Values, file *os.File) ([]byte, erro } apiURL.RawQuery = params.Encode() - req, err := http.NewRequest(http.MethodGet, apiURL.String(), nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, apiURL.String(), nil) if err != nil || req == nil { return nil, fmt.Errorf("cannot init http request: %s", err) } @@ -557,14 +562,14 @@ func (c *Client) UploadVoice(message *Message) error { return nil } -func (c *Client) GetEvents(lastEventID int, pollTime int) ([]*Event, error) { +func (c *Client) GetEvents(ctx context.Context, lastEventID int, pollTime int) ([]*Event, error) { params := url.Values{ "lastEventId": {strconv.Itoa(lastEventID)}, "pollTime": {strconv.Itoa(pollTime)}, } events := &eventsResponse{} - response, err := c.Do("/events/get", params, nil) + response, err := c.DoWithContext(ctx, "/events/get", params, nil) if err != nil { return events.Events, fmt.Errorf("error while making request: %s", err) } diff --git a/client_test.go b/client_test.go index e91c40d..60198d8 100644 --- a/client_test.go +++ b/client_test.go @@ -1,6 +1,7 @@ package botgolang import ( + "context" "net/http" "net/http/httptest" "net/url" @@ -283,7 +284,7 @@ func TestClient_GetEvents_OK(t *testing.T) { logger: &logrus.Logger{}, } - events, err := client.GetEvents(0, 0) + events, err := client.GetEvents(context.Background(), 0, 0) require.NoError(err) assert.Equal(events, expected) diff --git a/updates.go b/updates.go index 5abb25b..4628c1b 100644 --- a/updates.go +++ b/updates.go @@ -36,7 +36,7 @@ func (u *Updater) NewMessageFromPayload(message EventPayload) *Message { } func (u *Updater) RunUpdatesCheck(ctx context.Context, ch chan<- Event) { - _, err := u.GetLastEvents(0) + _, err := u.GetLastEvents(ctx, 0) if err != nil { u.logger.WithFields(logrus.Fields{ "err": err, @@ -49,7 +49,7 @@ func (u *Updater) RunUpdatesCheck(ctx context.Context, ch chan<- Event) { close(ch) return default: - events, err := u.GetLastEvents(u.PollTime) + events, err := u.GetLastEvents(ctx, u.PollTime) if err != nil { u.logger.WithFields(logrus.Fields{ "err": err, @@ -70,8 +70,8 @@ func (u *Updater) RunUpdatesCheck(ctx context.Context, ch chan<- Event) { } } -func (u *Updater) GetLastEvents(pollTime int) ([]*Event, error) { - events, err := u.client.GetEvents(u.lastEventID, pollTime) +func (u *Updater) GetLastEvents(ctx context.Context, pollTime int) ([]*Event, error) { + events, err := u.client.GetEvents(ctx, u.lastEventID, pollTime) if err != nil { u.logger.WithFields(logrus.Fields{ "err": err, From b5255de2cb681e5c903e2868c94cabcb90ce54fb Mon Sep 17 00:00:00 2001 From: "a.muradyan" Date: Fri, 29 Oct 2021 13:05:34 +0300 Subject: [PATCH 2/4] Add backward compatibility to GetLastEvents --- updates.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/updates.go b/updates.go index 4628c1b..8895de9 100644 --- a/updates.go +++ b/updates.go @@ -70,7 +70,11 @@ func (u *Updater) RunUpdatesCheck(ctx context.Context, ch chan<- Event) { } } -func (u *Updater) GetLastEvents(ctx context.Context, pollTime int) ([]*Event, error) { +func (u *Updater) GetLastEvents(pollTime int) ([]*Event, error) { + return u.GetLastEventsWithContext(context.Background(), pollTime) +} + +func (u *Updater) GetLastEventsWithContext(ctx context.Context, pollTime int) ([]*Event, error) { events, err := u.client.GetEvents(ctx, u.lastEventID, pollTime) if err != nil { u.logger.WithFields(logrus.Fields{ From 56ab49f1291e4441b8bbb153eab8649c31334796 Mon Sep 17 00:00:00 2001 From: "a.muradyan" Date: Fri, 29 Oct 2021 13:12:49 +0300 Subject: [PATCH 3/4] fix bug in updates and add backwards compability to GetEvents --- client.go | 6 +++++- client_test.go | 3 +-- updates.go | 6 +++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/client.go b/client.go index ed6afc2..883eed1 100644 --- a/client.go +++ b/client.go @@ -562,7 +562,11 @@ func (c *Client) UploadVoice(message *Message) error { return nil } -func (c *Client) GetEvents(ctx context.Context, lastEventID int, pollTime int) ([]*Event, error) { +func (c *Client) GetEvents(lastEventID int, pollTime int) ([]*Event, error) { + return c.GetLastEventsWithContext(context.Background(), lastEventID, pollTime) +} + +func (c *Client) GetLastEventsWithContext(ctx context.Context, lastEventID int, pollTime int) ([]*Event, error) { params := url.Values{ "lastEventId": {strconv.Itoa(lastEventID)}, "pollTime": {strconv.Itoa(pollTime)}, diff --git a/client_test.go b/client_test.go index 60198d8..e91c40d 100644 --- a/client_test.go +++ b/client_test.go @@ -1,7 +1,6 @@ package botgolang import ( - "context" "net/http" "net/http/httptest" "net/url" @@ -284,7 +283,7 @@ func TestClient_GetEvents_OK(t *testing.T) { logger: &logrus.Logger{}, } - events, err := client.GetEvents(context.Background(), 0, 0) + events, err := client.GetEvents(0, 0) require.NoError(err) assert.Equal(events, expected) diff --git a/updates.go b/updates.go index 8895de9..3bef054 100644 --- a/updates.go +++ b/updates.go @@ -36,7 +36,7 @@ func (u *Updater) NewMessageFromPayload(message EventPayload) *Message { } func (u *Updater) RunUpdatesCheck(ctx context.Context, ch chan<- Event) { - _, err := u.GetLastEvents(ctx, 0) + _, err := u.GetLastEventsWithContext(ctx, 0) if err != nil { u.logger.WithFields(logrus.Fields{ "err": err, @@ -49,7 +49,7 @@ func (u *Updater) RunUpdatesCheck(ctx context.Context, ch chan<- Event) { close(ch) return default: - events, err := u.GetLastEvents(ctx, u.PollTime) + events, err := u.GetLastEventsWithContext(ctx, u.PollTime) if err != nil { u.logger.WithFields(logrus.Fields{ "err": err, @@ -75,7 +75,7 @@ func (u *Updater) GetLastEvents(pollTime int) ([]*Event, error) { } func (u *Updater) GetLastEventsWithContext(ctx context.Context, pollTime int) ([]*Event, error) { - events, err := u.client.GetEvents(ctx, u.lastEventID, pollTime) + events, err := u.client.GetLastEventsWithContext(ctx, u.lastEventID, pollTime) if err != nil { u.logger.WithFields(logrus.Fields{ "err": err, From 92519dadf3d80d4f801491b8f89e747487b7ad0b Mon Sep 17 00:00:00 2001 From: "a.muradyan" Date: Mon, 8 Nov 2021 04:12:34 +0300 Subject: [PATCH 4/4] s/GetLastEventsWithContext/GetEventsWithContext --- client.go | 4 ++-- updates.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client.go b/client.go index 883eed1..9188bcd 100644 --- a/client.go +++ b/client.go @@ -563,10 +563,10 @@ func (c *Client) UploadVoice(message *Message) error { } func (c *Client) GetEvents(lastEventID int, pollTime int) ([]*Event, error) { - return c.GetLastEventsWithContext(context.Background(), lastEventID, pollTime) + return c.GetEventsWithContext(context.Background(), lastEventID, pollTime) } -func (c *Client) GetLastEventsWithContext(ctx context.Context, lastEventID int, pollTime int) ([]*Event, error) { +func (c *Client) GetEventsWithContext(ctx context.Context, lastEventID int, pollTime int) ([]*Event, error) { params := url.Values{ "lastEventId": {strconv.Itoa(lastEventID)}, "pollTime": {strconv.Itoa(pollTime)}, diff --git a/updates.go b/updates.go index 3bef054..efc8fc0 100644 --- a/updates.go +++ b/updates.go @@ -75,7 +75,7 @@ func (u *Updater) GetLastEvents(pollTime int) ([]*Event, error) { } func (u *Updater) GetLastEventsWithContext(ctx context.Context, pollTime int) ([]*Event, error) { - events, err := u.client.GetLastEventsWithContext(ctx, u.lastEventID, pollTime) + events, err := u.client.GetEventsWithContext(ctx, u.lastEventID, pollTime) if err != nil { u.logger.WithFields(logrus.Fields{ "err": err,