Skip to content

Commit 38a87e4

Browse files
authored
Merge branch 'main' into dependabot/go_modules/github.com/stretchr/testify-1.11.1
2 parents d2eda52 + 94e73b2 commit 38a87e4

12 files changed

Lines changed: 289 additions & 236 deletions

File tree

.github/workflows/tagpr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
pull-requests: write
1313
issues: write
1414
steps:
15-
- uses: actions/checkout@v4
15+
- uses: actions/checkout@v5
1616
- uses: Songmu/tagpr@v1
1717
env:
1818
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/tests.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
runs-on: ubuntu-latest
99
steps:
1010
- name: Checkout
11-
uses: actions/checkout@v4
11+
uses: actions/checkout@v5
1212

1313
- name: Unshallow
1414
run: git fetch --prune --unshallow
@@ -30,7 +30,7 @@ jobs:
3030
runs-on: ubuntu-latest
3131
steps:
3232
- name: Checkout
33-
uses: actions/checkout@v4
33+
uses: actions/checkout@v5
3434

3535
- name: Unshallow
3636
run: git fetch --prune --unshallow
@@ -60,7 +60,7 @@ jobs:
6060
runs-on: ubuntu-latest
6161
steps:
6262
- name: Checkout
63-
uses: actions/checkout@v4
63+
uses: actions/checkout@v5
6464

6565
- name: Unshallow
6666
run: git fetch --prune --unshallow

certificates.go

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func NewCertificateOp(client *v1.Client) CertificateAPI {
4444
func (op *certificateOp) List(ctx context.Context) ([]v1.Certificate, error) {
4545
res, err := op.client.GetCertificates(ctx)
4646
if err != nil {
47-
return nil, err
47+
return nil, NewAPIError("Certificate.List", 0, err)
4848
}
4949

5050
switch p := res.(type) {
@@ -74,80 +74,80 @@ func (op *certificateOp) List(ctx context.Context) ([]v1.Certificate, error) {
7474
}
7575
return certificates, nil
7676
case *v1.GetCertificatesBadRequest:
77-
return nil, errors.New(p.Message.Value)
77+
return nil, NewAPIError("Certificate.List", 400, errors.New(p.Message.Value))
7878
case *v1.GetCertificatesUnauthorized:
79-
return nil, errors.New(p.Message.Value)
79+
return nil, NewAPIError("Certificate.List", 401, errors.New(p.Message.Value))
8080
case *v1.GetCertificatesInternalServerError:
81-
return nil, errors.New(p.Message.Value)
81+
return nil, NewAPIError("Certificate.List", 500, errors.New(p.Message.Value))
8282
}
8383

84-
return nil, errors.New("unexpected response type")
84+
return nil, NewAPIError("Certificate.List", 0, nil)
8585
}
8686

8787
func (op *certificateOp) Create(ctx context.Context, request *v1.Certificate) (*v1.Certificate, error) {
8888
res, err := op.client.AddCertificate(ctx, request)
8989
if err != nil {
90-
return nil, err
90+
return nil, NewAPIError("Certificate.Create", 0, err)
9191
}
9292

9393
switch p := res.(type) {
9494
case *v1.AddCertificateCreated:
9595
return &p.Apigw.Certificate.Value, nil
9696
case *v1.AddCertificateBadRequest:
97-
return nil, errors.New(p.Message.Value)
98-
case *v1.AddCertificateConflict:
99-
return nil, errors.New(p.Message.Value)
97+
return nil, NewAPIError("Certificate.Create", 400, errors.New(p.Message.Value))
10098
case *v1.AddCertificateUnauthorized:
101-
return nil, errors.New(p.Message.Value)
99+
return nil, NewAPIError("Certificate.Create", 401, errors.New(p.Message.Value))
100+
case *v1.AddCertificateConflict:
101+
return nil, NewAPIError("Certificate.Create", 409, errors.New(p.Message.Value))
102102
case *v1.AddCertificateInternalServerError:
103-
return nil, errors.New(p.Message.Value)
103+
return nil, NewAPIError("Certificate.Create", 500, errors.New(p.Message.Value))
104104
}
105105

106-
return nil, errors.New("unexpected response type")
106+
return nil, NewAPIError("Certificate.Create", 0, nil)
107107
}
108108

109109
func (op *certificateOp) Update(ctx context.Context, request *v1.Certificate, id uuid.UUID) error {
110110
res, err := op.client.UpdateCertificate(ctx, request, v1.UpdateCertificateParams{CertificateId: id})
111111
if err != nil {
112-
return err
112+
return NewAPIError("Certificate.Update", 0, err)
113113
}
114114

115115
switch p := res.(type) {
116116
case *v1.UpdateCertificateNoContent:
117117
return nil
118118
case *v1.UpdateCertificateBadRequest:
119-
return errors.New(p.Message.Value)
119+
return NewAPIError("Certificate.Update", 400, errors.New(p.Message.Value))
120+
case *v1.UpdateCertificateUnauthorized:
121+
return NewAPIError("Certificate.Update", 401, errors.New(p.Message.Value))
120122
case *v1.UpdateCertificateNotFound:
121-
return errors.New(p.Message.Value)
123+
return NewAPIError("Certificate.Update", 404, errors.New(p.Message.Value))
122124
case *v1.UpdateCertificateConflict:
123-
return errors.New(p.Message.Value)
124-
case *v1.UpdateCertificateUnauthorized:
125-
return errors.New(p.Message.Value)
125+
return NewAPIError("Certificate.Update", 409, errors.New(p.Message.Value))
126126
case *v1.UpdateCertificateInternalServerError:
127-
return errors.New(p.Message.Value)
127+
return NewAPIError("Certificate.Update", 500, errors.New(p.Message.Value))
128128
}
129129

130-
return errors.New("unexpected response type")
130+
return NewAPIError("Certificate.Update", 0, nil)
131131
}
132132

133133
func (op *certificateOp) Delete(ctx context.Context, id uuid.UUID) error {
134134
res, err := op.client.DeleteCertificate(ctx, v1.DeleteCertificateParams{CertificateId: id})
135135
if err != nil {
136-
return err
136+
return NewAPIError("Certificate.Delete", 0, err)
137137
}
138138

139139
switch p := res.(type) {
140140
case *v1.DeleteCertificateNoContent:
141141
return nil
142142
case *v1.DeleteCertificateBadRequest:
143-
return errors.New(p.Message.Value)
144-
case *v1.DeleteCertificateNotFound:
145-
return errors.New(p.Message.Value)
143+
return NewAPIError("Certificate.Delete", 400, errors.New(p.Message.Value))
146144
case *v1.DeleteCertificateUnauthorized:
147-
return errors.New(p.Message.Value)
145+
return NewAPIError("Certificate.Delete", 401, errors.New(p.Message.Value))
146+
case *v1.DeleteCertificateNotFound:
147+
return NewAPIError("Certificate.Delete", 404, errors.New(p.Message.Value))
148148
case *v1.DeleteCertificateInternalServerError:
149-
return errors.New(p.Message.Value)
149+
return NewAPIError("Certificate.Delete", 500, errors.New(p.Message.Value))
150150
}
151151

152-
return errors.New("unexpected response type")
152+
return NewAPIError("Certificate.Delete", 0, nil)
153153
}

domains.go

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func NewDomainOp(client *v1.Client) DomainAPI {
4444
func (op *domainOp) List(ctx context.Context) ([]v1.Domain, error) {
4545
res, err := op.client.GetDomains(ctx)
4646
if err != nil {
47-
return nil, err
47+
return nil, NewAPIError("Domain.List", 0, err)
4848
}
4949

5050
switch p := res.(type) {
@@ -74,80 +74,80 @@ func (op *domainOp) List(ctx context.Context) ([]v1.Domain, error) {
7474
}
7575
return domains, nil
7676
case *v1.GetDomainsBadRequest:
77-
return nil, errors.New(p.Message.Value)
77+
return nil, NewAPIError("Domain.List", 400, errors.New(p.Message.Value))
7878
case *v1.GetDomainsUnauthorized:
79-
return nil, errors.New(p.Message.Value)
79+
return nil, NewAPIError("Domain.List", 401, errors.New(p.Message.Value))
8080
case *v1.GetDomainsInternalServerError:
81-
return nil, errors.New(p.Message.Value)
81+
return nil, NewAPIError("Domain.List", 500, errors.New(p.Message.Value))
8282
}
8383

84-
return nil, errors.New("unexpected response type")
84+
return nil, NewAPIError("Domain.List", 0, nil)
8585
}
8686

8787
func (op *domainOp) Create(ctx context.Context, request *v1.Domain) (*v1.Domain, error) {
8888
res, err := op.client.AddDomain(ctx, request)
8989
if err != nil {
90-
return nil, err
90+
return nil, NewAPIError("Domain.Create", 0, err)
9191
}
9292

9393
switch p := res.(type) {
9494
case *v1.AddDomainCreated:
9595
return &p.Apigw.Domain.Value, nil
9696
case *v1.AddDomainBadRequest:
97-
return nil, errors.New(p.Message.Value)
98-
case *v1.AddDomainConflict:
99-
return nil, errors.New(p.Message.Value)
97+
return nil, NewAPIError("Domain.Create", 400, errors.New(p.Message.Value))
10098
case *v1.AddDomainUnauthorized:
101-
return nil, errors.New(p.Message.Value)
99+
return nil, NewAPIError("Domain.Create", 401, errors.New(p.Message.Value))
100+
case *v1.AddDomainConflict:
101+
return nil, NewAPIError("Domain.Create", 409, errors.New(p.Message.Value))
102102
case *v1.AddDomainInternalServerError:
103-
return nil, errors.New(p.Message.Value)
103+
return nil, NewAPIError("Domain.Create", 500, errors.New(p.Message.Value))
104104
}
105105

106-
return nil, errors.New("unexpected response type")
106+
return nil, NewAPIError("Domain.Create", 0, nil)
107107
}
108108

109109
func (op *domainOp) Update(ctx context.Context, request *v1.DomainPUT, id uuid.UUID) error {
110110
res, err := op.client.UpdateDomain(ctx, request, v1.UpdateDomainParams{DomainId: id})
111111
if err != nil {
112-
return err
112+
return NewAPIError("Domain.Update", 0, err)
113113
}
114114

115115
switch p := res.(type) {
116116
case *v1.UpdateDomainNoContent:
117117
return nil
118118
case *v1.UpdateDomainBadRequest:
119-
return errors.New(p.Message.Value)
119+
return NewAPIError("Domain.Update", 400, errors.New(p.Message.Value))
120+
case *v1.UpdateDomainUnauthorized:
121+
return NewAPIError("Domain.Update", 401, errors.New(p.Message.Value))
120122
case *v1.UpdateDomainNotFound:
121-
return errors.New(p.Message.Value)
123+
return NewAPIError("Domain.Update", 404, errors.New(p.Message.Value))
122124
case *v1.UpdateDomainConflict:
123-
return errors.New(p.Message.Value)
124-
case *v1.UpdateDomainUnauthorized:
125-
return errors.New(p.Message.Value)
125+
return NewAPIError("Domain.Update", 409, errors.New(p.Message.Value))
126126
case *v1.UpdateDomainInternalServerError:
127-
return errors.New(p.Message.Value)
127+
return NewAPIError("Domain.Update", 500, errors.New(p.Message.Value))
128128
}
129129

130-
return errors.New("unexpected response type")
130+
return NewAPIError("Domain.Update", 0, nil)
131131
}
132132

133133
func (op *domainOp) Delete(ctx context.Context, id uuid.UUID) error {
134134
res, err := op.client.DeleteDomain(ctx, v1.DeleteDomainParams{DomainId: id})
135135
if err != nil {
136-
return err
136+
return NewAPIError("Domain.Delete", 0, err)
137137
}
138138

139139
switch p := res.(type) {
140140
case *v1.DeleteDomainNoContent:
141141
return nil
142142
case *v1.DeleteDomainBadRequest:
143-
return errors.New(p.Message.Value)
144-
case *v1.DeleteDomainNotFound:
145-
return errors.New(p.Message.Value)
143+
return NewAPIError("Domain.Delete", 400, errors.New(p.Message.Value))
146144
case *v1.DeleteDomainUnauthorized:
147-
return errors.New(p.Message.Value)
145+
return NewAPIError("Domain.Delete", 401, errors.New(p.Message.Value))
146+
case *v1.DeleteDomainNotFound:
147+
return NewAPIError("Domain.Delete", 404, errors.New(p.Message.Value))
148148
case *v1.DeleteDomainInternalServerError:
149-
return errors.New(p.Message.Value)
149+
return NewAPIError("Domain.Delete", 500, errors.New(p.Message.Value))
150150
}
151151

152-
return errors.New("unexpected response type")
152+
return NewAPIError("Domain.Delete", 0, nil)
153153
}

error.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// Copyright 2025- The sacloud/nosql-api-go authors
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package apigw
16+
17+
import (
18+
client "github.com/sacloud/api-client-go"
19+
)
20+
21+
type Error struct {
22+
msg string
23+
err error
24+
}
25+
26+
func (e *Error) Error() string {
27+
if e.msg != "" {
28+
if e.err != nil {
29+
return "apigw: " + e.msg + ": " + e.err.Error()
30+
} else {
31+
return "apigw: " + e.msg
32+
}
33+
} else {
34+
return "apigw: " + e.err.Error()
35+
}
36+
}
37+
38+
func (e *Error) Unwrap() error {
39+
return e.err
40+
}
41+
42+
func NewError(msg string, err error) *Error {
43+
return &Error{msg: msg, err: err}
44+
}
45+
46+
func NewAPIError(method string, code int, err error) *Error {
47+
return &Error{msg: method, err: client.NewAPIError(code, "", err)}
48+
}

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/go-faster/jx v1.1.0
1010
github.com/google/uuid v1.6.0
1111
github.com/ogen-go/ogen v1.14.1-0.20250615151630-ffbdf74313c6
12-
github.com/sacloud/api-client-go v0.3.0
12+
github.com/sacloud/api-client-go v0.3.3
1313
github.com/sacloud/packages-go v0.0.11
1414
github.com/stretchr/testify v1.11.1
1515
)
@@ -22,7 +22,7 @@ require (
2222
github.com/ghodss/yaml v1.0.0 // indirect
2323
github.com/go-faster/yaml v0.4.6 // indirect
2424
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
25-
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
25+
github.com/hashicorp/go-retryablehttp v0.7.8 // indirect
2626
github.com/kr/pretty v0.3.1 // indirect
2727
github.com/mattn/go-colorable v0.1.14 // indirect
2828
github.com/mattn/go-isatty v0.0.20 // indirect

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB1
2525
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
2626
github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=
2727
github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
28+
github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48=
29+
github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw=
2830
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
2931
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
3032
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -46,6 +48,8 @@ github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU
4648
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
4749
github.com/sacloud/api-client-go v0.3.0 h1:NLA2BpZ5welAXBPxgmXSCjgn/k0ShDB0x5kmUHl7TJ4=
4850
github.com/sacloud/api-client-go v0.3.0/go.mod h1:v8ke3pxVQ9TCWEbMkfbLX8NMeGiPpE+uDwlgcUWfMgM=
51+
github.com/sacloud/api-client-go v0.3.3 h1:ZpSAyGpITA8UFO3Hq4qMHZLGuNI1FgxAxo4sqBnCKDs=
52+
github.com/sacloud/api-client-go v0.3.3/go.mod h1:0p3ukcWYXRCc2AUWTl1aA+3sXLvurvvDqhRaLZRLBwo=
4953
github.com/sacloud/go-http v0.1.9 h1:Xa5PY8/pb7XWhwG9nAeXSrYXPbtfBWqawgzxD5co3VE=
5054
github.com/sacloud/go-http v0.1.9/go.mod h1:DpDG+MSyxYaBwPJ7l3aKLMzwYdTVtC5Bo63HActcgoE=
5155
github.com/sacloud/packages-go v0.0.11 h1:hrRWLmfPM9w7GBs6xb5/ue6pEMl8t1UuDKyR/KfteHo=

0 commit comments

Comments
 (0)