From b32c5522a2db90b14c5361a31f9f5f05c47c00e5 Mon Sep 17 00:00:00 2001 From: Pedro Costa <550684+pnmcosta@users.noreply.github.com> Date: Fri, 9 May 2025 08:47:22 +0100 Subject: [PATCH] [management] rest client with options --- management/client/rest/client.go | 17 +++++++++++++++-- management/client/rest/options.go | 11 +++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 management/client/rest/options.go diff --git a/management/client/rest/client.go b/management/client/rest/client.go index 0785d88af..57e05a171 100644 --- a/management/client/rest/client.go +++ b/management/client/rest/client.go @@ -14,6 +14,7 @@ import ( type Client struct { managementURL string authHeader string + httpClient *http.Client // Accounts NetBird account APIs // see more: https://docs.netbird.io/api/resources/accounts @@ -69,21 +70,33 @@ type Client struct { } // New initialize new Client instance using PAT token -func New(managementURL, token string) *Client { +func New(managementURL, token string, opts ...option) *Client { client := &Client{ managementURL: managementURL, authHeader: "Token " + token, + httpClient: http.DefaultClient, } + + for _, option := range opts { + option(client) + } + client.initialize() return client } // NewWithBearerToken initialize new Client instance using Bearer token type -func NewWithBearerToken(managementURL, token string) *Client { +func NewWithBearerToken(managementURL, token string, opts ...option) *Client { client := &Client{ managementURL: managementURL, authHeader: "Bearer " + token, + httpClient: http.DefaultClient, } + + for _, option := range opts { + option(client) + } + client.initialize() return client } diff --git a/management/client/rest/options.go b/management/client/rest/options.go new file mode 100644 index 000000000..35cf11b17 --- /dev/null +++ b/management/client/rest/options.go @@ -0,0 +1,11 @@ +package rest + +import "net/http" + +type option func(*Client) + +func WithHttpClient(client *http.Client) option { + return func(c *Client) { + c.httpClient = client + } +}