Skip to content

Commit e3aa201

Browse files
committed
feat(private-networks) Refactor PrivateNetworksDomainsList to use uint for pagination parameters.
- Use correct error library.
1 parent 20c5ba4 commit e3aa201

File tree

3 files changed

+35
-15
lines changed

3 files changed

+35
-15
lines changed

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.24
44

55
require (
66
github.com/Scalingo/go-utils/errors/v2 v2.5.1
7+
github.com/Scalingo/go-utils/logger v1.9.1
78
github.com/Scalingo/go-utils/pagination v1.1.1
89
github.com/golang-jwt/jwt/v4 v4.5.2
910
github.com/golang/mock v1.6.0
@@ -17,5 +18,7 @@ require (
1718
github.com/davecgh/go-spew v1.1.1 // indirect
1819
github.com/pkg/errors v0.9.1 // indirect
1920
github.com/pmezard/go-difflib v1.0.0 // indirect
21+
github.com/sirupsen/logrus v1.9.3 // indirect
22+
golang.org/x/sys v0.34.0 // indirect
2023
gopkg.in/yaml.v3 v3.0.1 // indirect
2124
)

go.sum

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
github.com/Scalingo/go-utils/errors/v2 v2.5.1 h1:1tfJW6/ZxTgrRmFTlKQCOtArQquOW0/XdZQzx8wMHoM=
22
github.com/Scalingo/go-utils/errors/v2 v2.5.1/go.mod h1:SbR1JuMtfAl+gpM7ahUW/c3Jm5MMzMAwJBk1pEHkVd8=
3+
github.com/Scalingo/go-utils/logger v1.9.1 h1:AjVCdWcIAQXzrrFdLTJVBhrAqMX27mSgXcUK53PSKQs=
4+
github.com/Scalingo/go-utils/logger v1.9.1/go.mod h1:A6oLYDkLaYaTAx1JJBBASYEwyEpayCfeAsnAdK0+TQw=
35
github.com/Scalingo/go-utils/pagination v1.1.1 h1:/2C9hvh+l8FAUnHqb6boAtdz9sOMK5zMOVDPYENMovM=
46
github.com/Scalingo/go-utils/pagination v1.1.1/go.mod h1:jR1Z7qXYHs1UqcbHfKZVoHoq548w+dlFCCX0BfbfuTs=
7+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
58
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
69
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
710
github.com/frankban/quicktest v1.2.2 h1:xfmOhhoH5fGPgbEAlhLpJH9p0z/0Qizio9osmvn9IUY=
@@ -23,6 +26,10 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
2326
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
2427
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
2528
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
29+
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
30+
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
31+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
32+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
2633
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
2734
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
2835
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
@@ -39,6 +46,9 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
3946
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
4047
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
4148
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
49+
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
50+
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
51+
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
4252
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
4353
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
4454
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -54,5 +64,6 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+
5464
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
5565
gopkg.in/errgo.v1 v1.0.1 h1:oQFRXzZ7CkBGdm1XZm/EbQYaYNNEElNBOd09M6cqNso=
5666
gopkg.in/errgo.v1 v1.0.1/go.mod h1:3NjfXwocQRYAPTq4/fzX+CwUhPRcR/azYRhj8G+LqMo=
67+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
5768
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
5869
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

privatenetworks.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@ import (
66
"net/url"
77
"strconv"
88

9+
"github.com/sirupsen/logrus"
910
"gopkg.in/errgo.v1"
1011

1112
httpclient "github.com/Scalingo/go-scalingo/v8/http"
13+
"github.com/Scalingo/go-utils/errors/v2"
14+
"github.com/Scalingo/go-utils/logger"
1215
"github.com/Scalingo/go-utils/pagination"
1316
)
1417

1518
type PrivateNetworksService interface {
16-
PrivateNetworksDomainsList(ctx context.Context, app string, page string, perPage string) (pagination.Paginated[[]PrivateNetworkDomain], error)
19+
PrivateNetworksDomainsList(ctx context.Context, app string, page uint, perPage uint) (pagination.Paginated[[]PrivateNetworkDomain], error)
1720
}
1821

1922
var _ PrivateNetworksService = (*Client)(nil)
@@ -24,26 +27,29 @@ type PrivateNetworkDomainsRes struct {
2427
Domains pagination.Paginated[[]PrivateNetworkDomain] `json:"domain_names"`
2528
}
2629

27-
func (c *Client) PrivateNetworksDomainsList(ctx context.Context, app string, page string, perPage string) (pagination.Paginated[[]PrivateNetworkDomain], error) {
30+
func (c *Client) PrivateNetworksDomainsList(ctx context.Context, app string, page uint, perPage uint) (pagination.Paginated[[]PrivateNetworkDomain], error) {
31+
ctx, _ = logger.WithFieldsToCtx(ctx,
32+
logrus.Fields{
33+
"app": app,
34+
"page": page,
35+
"per_page": perPage,
36+
})
37+
2838
var err error
29-
pageInt := 1
30-
if page != "" {
31-
pageInt, err = strconv.Atoi(page)
32-
if err != nil || pageInt < 1 {
33-
return pagination.Paginated[[]PrivateNetworkDomain]{}, errgo.Newf("invalid page number: %s", page)
34-
}
39+
validationErr := errors.NewValidationErrorsBuilder()
40+
if page < 1 {
41+
validationErr.Set("page", "must be greater than zero")
42+
return pagination.Paginated[[]PrivateNetworkDomain]{}, validationErr.Build()
3543
}
3644

37-
if perPage != "" {
38-
perPageInt, err := strconv.Atoi(perPage)
39-
if err != nil || perPageInt < 1 || perPageInt > 50 {
40-
return pagination.Paginated[[]PrivateNetworkDomain]{}, errgo.Newf("invalid per_page number: %s", perPage)
41-
}
45+
if perPage < 1 || perPage > 50 {
46+
validationErr.Set("per_page", "must be between 1 and 50")
47+
return pagination.Paginated[[]PrivateNetworkDomain]{}, validationErr.Build()
4248
}
4349

4450
params := url.Values{}
45-
params.Set("page", strconv.Itoa(pageInt))
46-
params.Set("per-page", perPage)
51+
params.Set("page", strconv.Itoa(int(page)))
52+
params.Set("per-page", strconv.Itoa(int(perPage)))
4753
req := &httpclient.APIRequest{
4854
Method: http.MethodGet,
4955
Endpoint: "/apps/" + app + "/private_network_domain_names?" + params.Encode(),

0 commit comments

Comments
 (0)