From 5accba791cec3dfee382472820b577ad58a181b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Michon?= Date: Wed, 11 Mar 2026 11:26:35 +0100 Subject: [PATCH] fix(privatenetworks): `PrivateNetworksDomainsList` must take a `pagination.Request` in argument --- CHANGELOG.md | 2 ++ privatenetworks.go | 25 ++++++++----------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ac9024..49c8efb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## To Be Released +* fix(privatenetworks): `PrivateNetworksDomainsList` must take a `pagination.Request` in argument (breaking change) + ## 10.0.0 * chore(databases): refactor constants diff --git a/privatenetworks.go b/privatenetworks.go index a24e22f..a1327de 100644 --- a/privatenetworks.go +++ b/privatenetworks.go @@ -2,17 +2,13 @@ package scalingo import ( "context" - "net/http" - "net/url" - "strconv" - httpclient "github.com/Scalingo/go-scalingo/v10/http" "github.com/Scalingo/go-utils/errors/v3" "github.com/Scalingo/go-utils/pagination" ) type PrivateNetworksService interface { - PrivateNetworksDomainsList(ctx context.Context, app string, page uint, perPage uint) (pagination.Paginated[[]PrivateNetworkDomain], error) + PrivateNetworksDomainsList(ctx context.Context, app string, paginationReq pagination.Request) (pagination.Paginated[[]PrivateNetworkDomain], error) } var _ PrivateNetworksService = (*Client)(nil) @@ -23,28 +19,23 @@ type PrivateNetworkDomainsRes struct { Domains pagination.Paginated[[]PrivateNetworkDomain] `json:"domain_names"` } -func (c *Client) PrivateNetworksDomainsList(ctx context.Context, app string, page uint, perPage uint) (pagination.Paginated[[]PrivateNetworkDomain], error) { - var err error +func (c *Client) PrivateNetworksDomainsList(ctx context.Context, app string, paginationReq pagination.Request) (pagination.Paginated[[]PrivateNetworkDomain], error) { validationErr := errors.NewValidationErrorsBuilder() - if page < 1 { + if paginationReq.Page < 1 { validationErr.Set("page", "must be greater than zero") return pagination.Paginated[[]PrivateNetworkDomain]{}, validationErr.Build() } - if perPage < 1 || perPage > 50 { + if paginationReq.PerPage < 1 || paginationReq.PerPage > 50 { validationErr.Set("per_page", "must be between 1 and 50") return pagination.Paginated[[]PrivateNetworkDomain]{}, validationErr.Build() } - params := url.Values{} - params.Set("page", strconv.Itoa(int(page))) - params.Set("per-page", strconv.Itoa(int(perPage))) - req := &httpclient.APIRequest{ - Method: http.MethodGet, - Endpoint: "/apps/" + app + "/private_network_domain_names?" + params.Encode(), - } var domainRes PrivateNetworkDomainsRes - err = c.ScalingoAPI().DoRequest(ctx, req, &domainRes) + err := c.ScalingoAPI().SubresourceList(ctx, + "apps", app, "private_network_domain_names", paginationReq.ToURLValues(), + &domainRes, + ) if err != nil { return pagination.Paginated[[]PrivateNetworkDomain]{}, errors.Wrap(ctx, err, "make api call to list the private network domain names") }