aboutsummaryrefslogtreecommitdiff
path: root/mastodon
diff options
context:
space:
mode:
authorr <r@freesoftwareextremist.com>2020-10-30 17:07:06 +0000
committerr <r@freesoftwareextremist.com>2020-10-30 17:07:06 +0000
commit140dfe2f638e755fa137995a29f2f44aa0b8c310 (patch)
tree1fe05a7c767451dee658521a9d4ac5329025f4ab /mastodon
parent237182c171beafc2d823fa6ea319bdd7e7209190 (diff)
downloadbloat-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.go34
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,
}
}