From a044dfcff11ab92c822b32bd8da20a47bfc9b65c Mon Sep 17 00:00:00 2001 From: decentral1se Date: Sun, 9 Nov 2025 15:28:53 +0100 Subject: [PATCH] feat: configurable client --- radar.go | 11 +++++++++++ radar_test.go | 13 +++++++++++++ 2 files changed, 24 insertions(+) diff --git a/radar.go b/radar.go index aaf9ccf..02640f2 100644 --- a/radar.go +++ b/radar.go @@ -51,6 +51,13 @@ func WithLogger(logger *slog.Logger) func(*RadarClient) { } } +// WithClient configures a client for RadarClient. +func WithClient(httpClient *http.Client) func(*RadarClient) { + return func(r *RadarClient) { + r.web = httpClient + } +} + // Returns an instance of RadarClient which can be used to interact with the // radar server. func NewRadarClient(opts ...func(*RadarClient)) *RadarClient { @@ -77,6 +84,10 @@ func (radar *RadarClient) GetLogger() *slog.Logger { return radar.log } +func (radar *RadarClient) GetClient() *http.Client { + return radar.web +} + func (radar *RadarClient) GetTimeout() int { return radar.timeout } diff --git a/radar_test.go b/radar_test.go index 7531ee8..a87cfb4 100644 --- a/radar_test.go +++ b/radar_test.go @@ -2,8 +2,10 @@ package radarapi import ( "log/slog" + "net/http" "os" "testing" + "time" ) func TestWithTimeout(t *testing.T) { @@ -25,3 +27,14 @@ func TestWithLoggerLevel(t *testing.T) { t.Errorf("expected a max log level of warn, got debug") } } + +func TestWithClient(t *testing.T) { + var ( + expect = 1312 * time.Second + client = &http.Client{Timeout: 1312 * time.Second} + ) + radarClient := NewRadarClient(WithClient(client)) + if radarClient.GetClient().Timeout != expect { + t.Errorf("expected timeout of 1312 seconds") + } +}