@@ -529,19 +529,29 @@ 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 HTTP client with transport wrappers
533+ httpClient , err : = r .createHTTPClient (inv .Context (), r .clientURL , inv )
534534 if err != nil {
535535 return nil , err
536536 }
537- client .SetSessionToken (r .token )
537+
538+ clientOpts := []codersdk.ClientOption {
539+ codersdk .WithSessionToken (r .token ),
540+ codersdk .WithHTTPClient (httpClient ),
541+ }
542+
543+ if r .disableDirect {
544+ clientOpts = append (clientOpts , codersdk .WithDisableDirectConnections ())
545+ }
538546
539547 if r .debugHTTP {
540- client .PlainLogger = os .Stderr
541- client .SetLogBodies (true )
548+ clientOpts = append (clientOpts ,
549+ codersdk .WithPlainLogger (os .Stderr ),
550+ codersdk .WithLogBodies (),
551+ )
542552 }
543- client . DisableDirectConnections = r . disableDirect
544- return client , nil
553+
554+ return codersdk . New ( r . clientURL , clientOpts ... ) , nil
545555}
546556
547557// TryInitClient is similar to InitClient but doesn't error when credentials are missing.
@@ -577,19 +587,29 @@ func (r *RootCmd) TryInitClient(inv *serpent.Invocation) (*codersdk.Client, erro
577587
578588 // Only configure the client if we have a URL
579589 if r .clientURL != nil && r .clientURL .String () != "" {
580- client := & codersdk. Client {}
581- err = r .configureClient (inv .Context (), client , r .clientURL , inv )
590+ // Configure HTTP client with transport wrappers
591+ httpClient , err : = r .createHTTPClient (inv .Context (), r .clientURL , inv )
582592 if err != nil {
583593 return nil , err
584594 }
585- client .SetSessionToken (r .token )
595+
596+ clientOpts := []codersdk.ClientOption {
597+ codersdk .WithSessionToken (r .token ),
598+ codersdk .WithHTTPClient (httpClient ),
599+ }
600+
601+ if r .disableDirect {
602+ clientOpts = append (clientOpts , codersdk .WithDisableDirectConnections ())
603+ }
586604
587605 if r .debugHTTP {
588- client .PlainLogger = os .Stderr
589- client .SetLogBodies (true )
606+ clientOpts = append (clientOpts ,
607+ codersdk .WithPlainLogger (os .Stderr ),
608+ codersdk .WithLogBodies (),
609+ )
590610 }
591- client . DisableDirectConnections = r . disableDirect
592- return client , nil
611+
612+ return codersdk . New ( r . clientURL , clientOpts ... ) , nil
593613 }
594614
595615 // Return a minimal client if no URL is available
@@ -602,10 +622,7 @@ func (r *RootCmd) HeaderTransport(ctx context.Context, serverURL *url.URL) (*cod
602622 return headerTransport (ctx , serverURL , r .header , r .headerCommand )
603623}
604624
605- func (r * RootCmd ) configureClient (ctx context.Context , client * codersdk.Client , serverURL * url.URL , inv * serpent.Invocation ) error {
606- if client .SessionTokenProvider == nil {
607- client .SessionTokenProvider = codersdk.FixedSessionTokenProvider {}
608- }
625+ func (r * RootCmd ) createHTTPClient (ctx context.Context , serverURL * url.URL , inv * serpent.Invocation ) (* http.Client , error ) {
609626 transport := http .DefaultTransport
610627 transport = wrapTransportWithTelemetryHeader (transport , inv )
611628 if ! r .noVersionCheck {
@@ -621,23 +638,24 @@ func (r *RootCmd) configureClient(ctx context.Context, client *codersdk.Client,
621638 }
622639 headerTransport , err := r .HeaderTransport (ctx , serverURL )
623640 if err != nil {
624- return xerrors .Errorf ("create header transport: %w" , err )
641+ return nil , xerrors .Errorf ("create header transport: %w" , err )
625642 }
626643 // The header transport has to come last.
627644 // codersdk checks for the header transport to get headers
628645 // to clone on the DERP client.
629646 headerTransport .Transport = transport
630- client . HTTPClient = & http.Client {
647+ return & http.Client {
631648 Transport : headerTransport ,
632- }
633- client .URL = serverURL
634- return nil
649+ }, nil
635650}
636651
637652func (r * RootCmd ) createUnauthenticatedClient (ctx context.Context , serverURL * url.URL , inv * serpent.Invocation ) (* codersdk.Client , error ) {
638- var client codersdk.Client
639- err := r .configureClient (ctx , & client , serverURL , inv )
640- return & client , err
653+ httpClient , err := r .createHTTPClient (ctx , serverURL , inv )
654+ if err != nil {
655+ return nil , err
656+ }
657+ client := codersdk .New (serverURL , codersdk .WithHTTPClient (httpClient ))
658+ return client , nil
641659}
642660
643661type AgentAuth struct {
0 commit comments