@@ -529,19 +529,29 @@ func (r *RootCmd) InitClient(inv *serpent.Invocation) (*codersdk.Client, error)
529
529
}
530
530
}
531
531
532
- client := & codersdk. Client {}
533
- err = r .configureClient (inv .Context (), client ,r .clientURL ,inv )
532
+ // Configure HTTP clientwith transport wrappers
533
+ httpClient , err : =r .createHTTPClient (inv .Context (),r .clientURL ,inv )
534
534
if err != nil {
535
535
return nil ,err
536
536
}
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
+ }
538
546
539
547
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
+ )
542
552
}
543
- client . DisableDirectConnections = r . disableDirect
544
- return client ,nil
553
+
554
+ return codersdk . New ( r . clientURL , clientOpts ... ) ,nil
545
555
}
546
556
547
557
// 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
577
587
578
588
// Only configure the client if we have a URL
579
589
if r .clientURL != nil && r .clientURL .String ()!= "" {
580
- client := & codersdk. Client {}
581
- err = r .configureClient (inv .Context (), client ,r .clientURL ,inv )
590
+ // Configure HTTP clientwith transport wrappers
591
+ httpClient , err : =r .createHTTPClient (inv .Context (),r .clientURL ,inv )
582
592
if err != nil {
583
593
return nil ,err
584
594
}
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
+ }
586
604
587
605
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
+ )
590
610
}
591
- client . DisableDirectConnections = r . disableDirect
592
- return client ,nil
611
+
612
+ return codersdk . New ( r . clientURL , clientOpts ... ) ,nil
593
613
}
594
614
595
615
// Return a minimal client if no URL is available
@@ -602,10 +622,7 @@ func (r *RootCmd) HeaderTransport(ctx context.Context, serverURL *url.URL) (*cod
602
622
return headerTransport (ctx ,serverURL ,r .header ,r .headerCommand )
603
623
}
604
624
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 ) {
609
626
transport := http .DefaultTransport
610
627
transport = wrapTransportWithTelemetryHeader (transport ,inv )
611
628
if ! r .noVersionCheck {
@@ -621,23 +638,24 @@ func (r *RootCmd) configureClient(ctx context.Context, client *codersdk.Client,
621
638
}
622
639
headerTransport ,err := r .HeaderTransport (ctx ,serverURL )
623
640
if err != nil {
624
- return xerrors .Errorf ("create header transport: %w" ,err )
641
+ return nil , xerrors .Errorf ("create header transport: %w" ,err )
625
642
}
626
643
// The header transport has to come last.
627
644
// codersdk checks for the header transport to get headers
628
645
// to clone on the DERP client.
629
646
headerTransport .Transport = transport
630
- client . HTTPClient = & http.Client {
647
+ return & http.Client {
631
648
Transport :headerTransport ,
632
- }
633
- client .URL = serverURL
634
- return nil
649
+ },nil
635
650
}
636
651
637
652
func (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
641
659
}
642
660
643
661
type AgentAuth struct {