Skip to content

Commit

Permalink
refactoring newRoundTripperBuilder
Browse files Browse the repository at this point in the history
  • Loading branch information
vbauerster committed Jul 27, 2024
1 parent 2bc1031 commit 22ddc2e
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 20 deletions.
14 changes: 7 additions & 7 deletions getparty.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ func (cmd *Cmd) Run(args []string, version, commit string) (err error) {
if err != nil {
return err
}
rtBuilder := newRoundTripperBuilder(tlsConfig)

cmd.Out = cmd.getOut()
cmd.initLoggers()
Expand All @@ -203,7 +204,7 @@ func (cmd *Cmd) Run(args []string, version, commit string) (err error) {
cmd.patcher = makeReqPatcher(userinfo, cmd.options.HeaderMap)

if cmd.options.BestMirror.Mirrors != "" {
top, err := cmd.bestMirror(newRoundTripperBuilder(false).withTLSConfig(tlsConfig).build())
top, err := cmd.bestMirror(rtBuilder.pool(false).build())
if err != nil {
return err
}
Expand All @@ -223,9 +224,8 @@ func (cmd *Cmd) Run(args []string, version, commit string) (err error) {
if err != nil {
return err
}
transport := newRoundTripperBuilder(cmd.options.Parts != 0).withTLSConfig(tlsConfig).build()
client := &http.Client{
Transport: transport,
Transport: rtBuilder.pool(cmd.options.Parts != 0).build(),
Jar: jar,
CheckRedirect: func(_ *http.Request, via []*http.Request) error {
if len(via) >= maxRedirects {
Expand Down Expand Up @@ -282,6 +282,9 @@ func (cmd *Cmd) Run(args []string, version, commit string) (err error) {

cancelMap := make(map[int]func())

client.CheckRedirect = nil
rtBuilder = nil

for i, p := range session.Parts {
if p.isDone() {
atomic.AddUint32(&doneCount, 1)
Expand All @@ -290,6 +293,7 @@ func (cmd *Cmd) Run(args []string, version, commit string) (err error) {
ctx, cancel := context.WithCancel(cmd.Ctx)
cancelMap[i+1] = cancel
p.ctx = ctx
p.client = client
p.statusOK = statusOK
p.name = fmt.Sprintf("P%02d", i+1)
p.order = i + 1
Expand All @@ -298,10 +302,6 @@ func (cmd *Cmd) Run(args []string, version, commit string) (err error) {
p.incrTotalBar = incrTotalBar
p.patcher = cmd.patcher
p.debugWriter = cmd.getErr()
p.client = &http.Client{
Transport: transport,
Jar: jar,
}
p := p // https://golang.org/doc/faq#closures_and_goroutines
eg.Go(func() error {
defer func() {
Expand Down
29 changes: 16 additions & 13 deletions round_tripper_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,28 @@ import (
)

type roundTripperBuilder struct {
transport *http.Transport
pooled bool
tlsConfig *tls.Config
}

func newRoundTripperBuilder(pooled bool) roundTripperBuilder {
if pooled {
return roundTripperBuilder{
transport: cleanhttp.DefaultPooledTransport(),
}
}
return roundTripperBuilder{
transport: cleanhttp.DefaultTransport(),
func newRoundTripperBuilder(config *tls.Config) *roundTripperBuilder {
return &roundTripperBuilder{
tlsConfig: config,
}
}

func (b roundTripperBuilder) withTLSConfig(config *tls.Config) roundTripperBuilder {
b.transport.TLSClientConfig = config
func (b *roundTripperBuilder) pool(ok bool) *roundTripperBuilder {
b.pooled = ok
return b
}

func (b roundTripperBuilder) build() http.RoundTripper {
return b.transport
func (b *roundTripperBuilder) build() http.RoundTripper {
var transport *http.Transport
if b.pooled {
transport = cleanhttp.DefaultPooledTransport()
} else {
transport = cleanhttp.DefaultTransport()
}
transport.TLSClientConfig = b.tlsConfig
return transport
}

0 comments on commit 22ddc2e

Please sign in to comment.