@@ -27,6 +27,7 @@ import (
27
27
"cdr.dev/slog"
28
28
29
29
"github.com/charmbracelet/lipgloss"
30
+ "github.com/gobwas/httphead"
30
31
"github.com/mattn/go-isatty"
31
32
32
33
"github.com/coder/coder/buildinfo"
@@ -494,14 +495,15 @@ func (r *RootCmd) InitClient(client *codersdk.Client) clibase.MiddlewareFunc {
494
495
}
495
496
err = r .setClient (
496
497
client , r .clientURL ,
497
- append (r .header , codersdk .CLITelemetryHeader + "=" +
498
- base64 .StdEncoding .EncodeToString (byt ),
499
- ),
500
498
)
501
499
if err != nil {
502
500
return err
503
501
}
504
502
503
+ client .ExtraHeaders .Set (codersdk .CLITelemetryHeader ,
504
+ base64 .StdEncoding .EncodeToString (byt ),
505
+ )
506
+
505
507
client .SetSessionToken (r .token )
506
508
507
509
if r .debugHTTP {
@@ -544,28 +546,29 @@ func (r *RootCmd) InitClient(client *codersdk.Client) clibase.MiddlewareFunc {
544
546
}
545
547
}
546
548
547
- func (* RootCmd ) setClient (client * codersdk.Client , serverURL * url.URL , headers [] string ) error {
549
+ func (r * RootCmd ) setClient (client * codersdk.Client , serverURL * url.URL ) error {
548
550
transport := & headerTransport {
549
551
transport : http .DefaultTransport ,
550
552
header : http.Header {},
551
553
}
552
- for _ , header := range headers {
553
- parts := strings .SplitN (header , "=" , 2 )
554
- if len (parts ) < 2 {
555
- return xerrors .Errorf ("split header %q had less than two parts" , header )
556
- }
557
- transport .header .Add (parts [0 ], parts [1 ])
558
- }
559
554
client .URL = serverURL
560
555
client .HTTPClient = & http.Client {
561
556
Transport : transport ,
562
557
}
558
+ client .ExtraHeaders = make (http.Header )
559
+ for _ , hd := range r .header {
560
+ k , v , ok := httphead .ParseHeaderLine ([]byte (hd ))
561
+ if ! ok {
562
+ return xerrors .Errorf ("invalid header: %s" , hd )
563
+ }
564
+ client .ExtraHeaders .Add (string (k ), string (v ))
565
+ }
563
566
return nil
564
567
}
565
568
566
569
func (r * RootCmd ) createUnauthenticatedClient (serverURL * url.URL ) (* codersdk.Client , error ) {
567
570
var client codersdk.Client
568
- err := r .setClient (& client , serverURL , r . header )
571
+ err := r .setClient (& client , serverURL )
569
572
return & client , err
570
573
}
571
574
0 commit comments