Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite9af6ff

Browse files
committed
chore: refactor InitClient() to use ClientBuilder
1 parenta617309 commite9af6ff

File tree

2 files changed

+48
-33
lines changed

2 files changed

+48
-33
lines changed

‎cli/root.go‎

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -529,19 +529,26 @@ func (r *RootCmd) InitClient(inv *serpent.Invocation) (*codersdk.Client, error)
529529
}
530530
}
531531

532-
client:=&codersdk.Client{}
533-
err=r.configureClient(inv.Context(),client,r.clientURL,inv)
532+
// Configure HTTPclientwith transport wrappers
533+
httpClient,err:=r.createHTTPClient(inv.Context(),r.clientURL,inv)
534534
iferr!=nil {
535535
returnnil,err
536536
}
537-
client.SetSessionToken(r.token)
537+
538+
// Use ClientBuilder to construct the builder
539+
builder:=codersdk.NewClientBuilder(r.clientURL).
540+
SessionToken(r.token).
541+
HTTPClient(httpClient)
542+
543+
ifr.disableDirect {
544+
builder.DisableDirectConnections()
545+
}
538546

539547
ifr.debugHTTP {
540-
client.PlainLogger=os.Stderr
541-
client.SetLogBodies(true)
548+
builder.PlainLogger(os.Stderr).LogBodies(true)
542549
}
543-
client.DisableDirectConnections=r.disableDirect
544-
returnclient,nil
550+
551+
returnbuilder.Build(),nil
545552
}
546553

547554
// TryInitClient is similar to InitClient but doesn't error when credentials are missing.
@@ -577,19 +584,26 @@ func (r *RootCmd) TryInitClient(inv *serpent.Invocation) (*codersdk.Client, erro
577584

578585
// Only configure the client if we have a URL
579586
ifr.clientURL!=nil&&r.clientURL.String()!="" {
580-
client:=&codersdk.Client{}
581-
err=r.configureClient(inv.Context(),client,r.clientURL,inv)
587+
// Configure HTTPclientwith transport wrappers
588+
httpClient,err:=r.createHTTPClient(inv.Context(),r.clientURL,inv)
582589
iferr!=nil {
583590
returnnil,err
584591
}
585-
client.SetSessionToken(r.token)
592+
593+
// Use ClientBuilder to construct the builder
594+
builder:=codersdk.NewClientBuilder(r.clientURL).
595+
SessionToken(r.token).
596+
HTTPClient(httpClient)
597+
598+
ifr.disableDirect {
599+
builder.DisableDirectConnections()
600+
}
586601

587602
ifr.debugHTTP {
588-
client.PlainLogger=os.Stderr
589-
client.SetLogBodies(true)
603+
builder.PlainLogger(os.Stderr).LogBodies(true)
590604
}
591-
client.DisableDirectConnections=r.disableDirect
592-
returnclient,nil
605+
606+
returnbuilder.Build(),nil
593607
}
594608

595609
// Return a minimal client if no URL is available
@@ -602,17 +616,14 @@ func (r *RootCmd) HeaderTransport(ctx context.Context, serverURL *url.URL) (*cod
602616
returnheaderTransport(ctx,serverURL,r.header,r.headerCommand)
603617
}
604618

605-
func (r*RootCmd)configureClient(ctx context.Context,client*codersdk.Client,serverURL*url.URL,inv*serpent.Invocation)error {
606-
ifclient.SessionTokenProvider==nil {
607-
client.SessionTokenProvider= codersdk.FixedSessionTokenProvider{}
608-
}
619+
func (r*RootCmd)createHTTPClient(ctx context.Context,serverURL*url.URL,inv*serpent.Invocation) (*http.Client,error) {
609620
transport:=http.DefaultTransport
610621
transport=wrapTransportWithTelemetryHeader(transport,inv)
611622
if!r.noVersionCheck {
612623
transport=wrapTransportWithVersionMismatchCheck(transport,inv,buildinfo.Version(),func(ctx context.Context) (codersdk.BuildInfoResponse,error) {
613624
// Create a new client without any wrapped transport
614625
// otherwise it creates an infinite loop!
615-
basicClient:=codersdk.New(serverURL)
626+
basicClient:=codersdk.NewClientBuilder(serverURL).Build()
616627
returnbasicClient.BuildInfo(ctx)
617628
})
618629
}
@@ -621,23 +632,24 @@ func (r *RootCmd) configureClient(ctx context.Context, client *codersdk.Client,
621632
}
622633
headerTransport,err:=r.HeaderTransport(ctx,serverURL)
623634
iferr!=nil {
624-
returnxerrors.Errorf("create header transport: %w",err)
635+
returnnil,xerrors.Errorf("create header transport: %w",err)
625636
}
626637
// The header transport has to come last.
627638
// codersdk checks for the header transport to get headers
628639
// to clone on the DERP client.
629640
headerTransport.Transport=transport
630-
client.HTTPClient=&http.Client{
641+
return&http.Client{
631642
Transport:headerTransport,
632-
}
633-
client.URL=serverURL
634-
returnnil
643+
},nil
635644
}
636645

637646
func (r*RootCmd)createUnauthenticatedClient(ctx context.Context,serverURL*url.URL,inv*serpent.Invocation) (*codersdk.Client,error) {
638-
varclient codersdk.Client
639-
err:=r.configureClient(ctx,&client,serverURL,inv)
640-
return&client,err
647+
httpClient,err:=r.createHTTPClient(ctx,serverURL,inv)
648+
iferr!=nil {
649+
returnnil,err
650+
}
651+
client:=codersdk.NewClientBuilder(serverURL).HTTPClient(httpClient)
652+
returnclient.Build(),nil
641653
}
642654

643655
typeAgentAuthstruct {

‎cli/vscodessh.go‎

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,18 @@ func (r *RootCmd) vscodeSSH() *serpent.Command {
7979
ctx,cancel:=context.WithCancel(inv.Context())
8080
defercancel()
8181

82-
client:=codersdk.New(serverURL)
83-
client.SetSessionToken(string(sessionToken))
84-
85-
// This adds custom headers to the request!
86-
err=r.configureClient(ctx,client,serverURL,inv)
82+
// Configure HTTP client with transport wrappers
83+
httpClient,err:=r.createHTTPClient(ctx,serverURL,inv)
8784
iferr!=nil {
88-
returnxerrors.Errorf("set client: %w",err)
85+
returnxerrors.Errorf("create HTTP client: %w",err)
8986
}
9087

88+
// Use ClientBuilder to construct the client
89+
client:=codersdk.NewClientBuilder(serverURL).
90+
SessionToken(string(sessionToken)).
91+
HTTPClient(httpClient).
92+
Build()
93+
9194
parts:=strings.Split(inv.Args[0],"--")
9295
iflen(parts)<3 {
9396
returnxerrors.Errorf("invalid argument format. must be: coder-vscode--<owner>--<name>--<agent?>")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp