Create new client per-request
continuous-integration/drone/push Build is passing Details

This commit is contained in:
DataHoarder 2022-08-18 10:28:46 +02:00
parent 606b43e1c5
commit 78377bc860
Signed by: DataHoarder
SSH Key Fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk
1 changed files with 12 additions and 6 deletions

18
http.go
View File

@ -24,7 +24,6 @@ type RangeReadSeekCloser struct {
bufferOffset int64
closed bool
fileName string
httpClient http.Client
}
func NewRangeReadSeekCloser(uri string) (*RangeReadSeekCloser, error) {
@ -34,9 +33,6 @@ func NewRangeReadSeekCloser(uri string) (*RangeReadSeekCloser, error) {
}
r := &RangeReadSeekCloser{
uri: parsedUrl,
httpClient: http.Client{
Transport: &http3.RoundTripper{},
},
}
if err = r.getInformation(); err != nil {
@ -50,6 +46,16 @@ func (r *RangeReadSeekCloser) GetURI() string {
return r.uri.String()
}
func (r *RangeReadSeekCloser) getClient() *http.Client {
return &http.Client{
CheckRedirect: func(req *http.Request, via []*http.Request) error {
req.Header.Del("referer")
return nil
},
Transport: &http3.RoundTripper{},
}
}
func (r *RangeReadSeekCloser) retryConnect() error {
r.bodyLock.Lock()
defer r.bodyLock.Unlock()
@ -62,7 +68,7 @@ func (r *RangeReadSeekCloser) retryConnect() error {
expectedLength := r.size - startOffset
headers.Set("Range", fmt.Sprintf("bytes=%d-", startOffset))
response, err := r.httpClient.Do(&http.Request{
response, err := r.getClient().Do(&http.Request{
Method: "GET",
URL: r.uri,
Header: headers,
@ -212,7 +218,7 @@ func (r *RangeReadSeekCloser) GetFileName() string {
}
func (r *RangeReadSeekCloser) getInformation() error {
response, err := r.httpClient.Head(r.GetURI())
response, err := r.getClient().Head(r.GetURI())
if err != nil {
return err
}