diff options
author | r <r@freesoftwareextremist.com> | 2020-10-30 17:07:06 +0000 |
---|---|---|
committer | r <r@freesoftwareextremist.com> | 2020-10-30 17:07:06 +0000 |
commit | 140dfe2f638e755fa137995a29f2f44aa0b8c310 (patch) | |
tree | 1fe05a7c767451dee658521a9d4ac5329025f4ab /mastodon | |
parent | 237182c171beafc2d823fa6ea319bdd7e7209190 (diff) | |
download | bloat-140dfe2f638e755fa137995a29f2f44aa0b8c310.tar.gz bloat-140dfe2f638e755fa137995a29f2f44aa0b8c310.zip |
Fix http client
- Remove automatic retries on 429
- Tweak http client config for better connection re-using
Diffstat (limited to 'mastodon')
-rw-r--r-- | mastodon/mastodon.go | 34 |
1 files changed, 6 insertions, 28 deletions
diff --git a/mastodon/mastodon.go b/mastodon/mastodon.go index 74fa0ff..658b09b 100644 --- a/mastodon/mastodon.go +++ b/mastodon/mastodon.go @@ -15,7 +15,6 @@ import ( "path" "path/filepath" "strings" - "time" "github.com/tomnomnom/linkheader" ) @@ -30,7 +29,7 @@ type Config struct { // Client is a API client for mastodon. type Client struct { - http.Client + *http.Client config *Config } @@ -144,32 +143,11 @@ func (c *Client) doAPI(ctx context.Context, method string, uri string, params in req.Header.Set("Content-Type", ct) } - var resp *http.Response - backoff := 1000 * time.Millisecond - for { - resp, err = c.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - - // handle status code 429, which indicates the server is throttling - // our requests. Do an exponential backoff and retry the request. - if resp.StatusCode == 429 { - if backoff > time.Hour { - break - } - backoff *= 2 - - select { - case <-time.After(backoff): - case <-ctx.Done(): - return ctx.Err() - } - continue - } - break + resp, err := c.Do(req) + if err != nil { + return err } + defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return parseAPIError("bad request", resp) @@ -190,7 +168,7 @@ func (c *Client) doAPI(ctx context.Context, method string, uri string, params in // NewClient return new mastodon API client. func NewClient(config *Config) *Client { return &Client{ - Client: *http.DefaultClient, + Client: http.DefaultClient, config: config, } } |