From ec43083868b32586631ce96c9bf1c876a175223f Mon Sep 17 00:00:00 2001 From: Vegard Engen Date: Mon, 14 Apr 2025 12:32:13 +0200 Subject: [PATCH] Add do_versioned and make do wrap do_versioned --- unifi/unifi.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/unifi/unifi.go b/unifi/unifi.go index 1ffa0ec..67b706f 100644 --- a/unifi/unifi.go +++ b/unifi/unifi.go @@ -191,10 +191,22 @@ func (c *Client) Login(ctx context.Context, user, pass string) error { } func (c *Client) do(ctx context.Context, method, relativeURL string, reqBody any, respBody any) error { + return c.do_versioned(ctx, "V1", method, relativeURL, reqBody, respBody) +} + +func (c *Client) do_versioned(ctx context.Context, version, method, relativeURL string, reqBody any, respBody any) error { // single threading requests, this is mostly to assist in CSRF token propagation c.Lock() defer c.Unlock() + var apiPath string + + if version == "V2" { + apiPath = c.apiV2Path + } else { + apiPath = c.apiPath + } + var ( reqReader io.Reader err error @@ -213,7 +225,7 @@ func (c *Client) do(ctx context.Context, method, relativeURL string, reqBody any return fmt.Errorf("unable to parse URL: %s %s %w", method, relativeURL, err) } if !strings.HasPrefix(relativeURL, "/") && !reqURL.IsAbs() { - reqURL.Path = path.Join(c.apiPath, reqURL.Path) + reqURL.Path = path.Join(apiPath, reqURL.Path) } url := c.baseURL.ResolveReference(reqURL)