@@ -20,29 +20,20 @@ import (
2020 "context"
2121 "errors"
2222 "fmt"
23- "net"
2423 "net/http"
2524 "strings"
26- "time"
2725
28- "github.com/mongodb-forks/digest"
2926 "github.com/mongodb/mongodb-atlas-cli/atlascli/internal/config"
3027 "github.com/mongodb/mongodb-atlas-cli/atlascli/internal/log"
28+ "github.com/mongodb/mongodb-atlas-cli/atlascli/internal/transport"
3129 atlasClustersPinned "go.mongodb.org/atlas-sdk/v20240530005/admin"
3230 atlasv2 "go.mongodb.org/atlas-sdk/v20241113001/admin"
3331 atlasauth "go.mongodb.org/atlas/auth"
3432 atlas "go.mongodb.org/atlas/mongodbatlas"
3533)
3634
3735const (
38- telemetryTimeout = 1 * time .Second
39- timeout = 5 * time .Second
40- keepAlive = 30 * time .Second
41- maxIdleConns = 5
42- maxIdleConnsPerHost = 4
43- idleConnTimeout = 30 * time .Second
44- expectContinueTimeout = 1 * time .Second
45- cloudGovServiceURL = "https://cloud.mongodbgov.com/"
36+ cloudGovServiceURL = "https://cloud.mongodbgov.com/"
4637)
4738
4839var errUnsupportedService = errors .New ("unsupported service" )
@@ -62,67 +53,26 @@ type Store struct {
6253 ctx context.Context
6354}
6455
65- var defaultTransport = & http.Transport {
66- DialContext : (& net.Dialer {
67- Timeout : timeout ,
68- KeepAlive : keepAlive ,
69- }).DialContext ,
70- MaxIdleConns : maxIdleConns ,
71- MaxIdleConnsPerHost : maxIdleConnsPerHost ,
72- Proxy : http .ProxyFromEnvironment ,
73- IdleConnTimeout : idleConnTimeout ,
74- ExpectContinueTimeout : expectContinueTimeout ,
75- }
76-
77- var telemetryTransport = & http.Transport {
78- DialContext : (& net.Dialer {
79- Timeout : telemetryTimeout ,
80- KeepAlive : keepAlive ,
81- }).DialContext ,
82- MaxIdleConns : maxIdleConns ,
83- MaxIdleConnsPerHost : maxIdleConnsPerHost ,
84- Proxy : http .ProxyFromEnvironment ,
85- IdleConnTimeout : idleConnTimeout ,
86- ExpectContinueTimeout : expectContinueTimeout ,
87- }
88-
8956func (s * Store ) httpClient (httpTransport http.RoundTripper ) (* http.Client , error ) {
9057 if s .username != "" && s .password != "" {
91- t := & digest.Transport {
92- Username : s .username ,
93- Password : s .password ,
94- }
95- t .Transport = httpTransport
58+ t := transport .NewDigestTransport (s .username , s .password , httpTransport )
9659 return t .Client ()
9760 }
9861 if s .accessToken != nil {
99- tr := & Transport {
100- token : s .accessToken ,
101- base : httpTransport ,
102- }
62+ tr := transport .NewAccessTokenTransport (s .accessToken , httpTransport )
10363
10464 return & http.Client {Transport : tr }, nil
10565 }
10666
10767 return & http.Client {Transport : httpTransport }, nil
10868}
10969
110- type Transport struct {
111- token * atlasauth.Token
112- base http.RoundTripper
113- }
114-
115- func (tr * Transport ) RoundTrip (req * http.Request ) (* http.Response , error ) {
116- tr .token .SetAuthHeader (req )
117- return tr .base .RoundTrip (req )
118- }
119-
12070func (s * Store ) transport () * http.Transport {
12171 switch {
12272 case s .telemetry :
123- return telemetryTransport
73+ return transport . Telemetry ()
12474 default :
125- return defaultTransport
75+ return transport . Default ()
12676 }
12777}
12878
0 commit comments