NewRateLimitedHTTPClient creates an HTTP client with rate limiting
()
| 87 | |
| 88 | // NewRateLimitedHTTPClient creates an HTTP client with rate limiting |
| 89 | func NewRateLimitedHTTPClient() *http.Client { |
| 90 | // Calculate interval from rate: 1 second / requests per second |
| 91 | interval := time.Second / time.Duration(clientRateLimitPerSecond) |
| 92 | |
| 93 | transport := &rateLimitedTransport{ |
| 94 | transport: http.DefaultTransport, |
| 95 | limiter: rate.NewLimiter(rate.Every(interval), clientRateLimitBurst), |
| 96 | } |
| 97 | return &http.Client{ |
| 98 | Transport: transport, |
| 99 | } |
| 100 | } |
| 101 | |
| 102 | func getHTTPClient(ctx context.DnoteCtx, options *requestOptions) *http.Client { |
| 103 | if options != nil && options.HTTPClient != nil { |
no outgoing calls