mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore: refactor codersdk.Client creation with functional args (#19759)
Adds ClientBuilder to build a codersdk.Client. This is a safer pattern than the current usage which modifies properties of the Client after creating it, opening us up to race conditions. Refactors agentsdk to use the builder.
This commit is contained in:
@@ -45,10 +45,16 @@ var ExternalLogSourceID = uuid.MustParse("3b579bf4-1ed8-4b99-87a8-e9a1e3410410")
|
||||
// @typescript-ignore SessionTokenSetup
|
||||
type SessionTokenSetup func(client *codersdk.Client) RefreshableSessionTokenProvider
|
||||
|
||||
func New(serverURL *url.URL, setup SessionTokenSetup) *Client {
|
||||
c := codersdk.New(serverURL)
|
||||
provider := setup(c)
|
||||
c.SessionTokenProvider = provider
|
||||
// New creates a new *Client which can be used by an agent to connect to Coderd. Use a SessionTokenSetup function
|
||||
// to define the session token provider for the Client. This overrides the SessionTokenProvider on the underlying
|
||||
// `*codersdk.Client`, so any `codersdk.ClientOptions` passed as `opts` should not set this property.
|
||||
func New(serverURL *url.URL, setup SessionTokenSetup, opts ...codersdk.ClientOption) *Client {
|
||||
var provider RefreshableSessionTokenProvider
|
||||
opts = append(opts, func(c *codersdk.Client) {
|
||||
provider = setup(c)
|
||||
c.SessionTokenProvider = provider
|
||||
})
|
||||
c := codersdk.New(serverURL, opts...)
|
||||
return &Client{
|
||||
SDK: c,
|
||||
RefreshableSessionTokenProvider: provider,
|
||||
|
||||
Reference in New Issue
Block a user