github.com/nilium/gitlab-runner@v12.5.0+incompatible/commands/helpers/cache_client.go (about)

     1  package helpers
     2  
     3  import (
     4  	"net"
     5  	"net/http"
     6  	"time"
     7  
     8  	"gitlab.com/gitlab-org/gitlab-runner/common"
     9  )
    10  
    11  type CacheClient struct {
    12  	http.Client
    13  }
    14  
    15  func (c *CacheClient) prepareClient(timeout int) {
    16  	if timeout > 0 {
    17  		c.Timeout = time.Duration(timeout) * time.Minute
    18  	} else {
    19  		c.Timeout = time.Duration(common.DefaultCacheRequestTimeout) * time.Minute
    20  	}
    21  }
    22  
    23  func (c *CacheClient) prepareTransport() {
    24  	c.Transport = &http.Transport{
    25  		Proxy: http.ProxyFromEnvironment,
    26  		DialContext: (&net.Dialer{
    27  			Timeout:   30 * time.Second,
    28  			KeepAlive: 30 * time.Second,
    29  		}).DialContext,
    30  		IdleConnTimeout:       90 * time.Second,
    31  		TLSHandshakeTimeout:   10 * time.Second,
    32  		ExpectContinueTimeout: 10 * time.Second,
    33  		ResponseHeaderTimeout: 30 * time.Second,
    34  	}
    35  }
    36  
    37  func NewCacheClient(timeout int) *CacheClient {
    38  	client := &CacheClient{}
    39  	client.prepareClient(timeout)
    40  	client.prepareTransport()
    41  
    42  	return client
    43  }