Skip to content

Commit 46618c6

Browse files
CDI-468: add origin shielding
1 parent 340eab7 commit 46618c6

File tree

3 files changed

+88
-10
lines changed

3 files changed

+88
-10
lines changed

client.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package gcdn
33
import (
44
"github.com/G-Core/gcorelabscdn-go/gcore"
55
"github.com/G-Core/gcorelabscdn-go/origingroups"
6+
"github.com/G-Core/gcorelabscdn-go/originshielding"
67
"github.com/G-Core/gcorelabscdn-go/resources"
78
"github.com/G-Core/gcorelabscdn-go/rules"
89
"github.com/G-Core/gcorelabscdn-go/sslcerts"
@@ -18,20 +19,22 @@ type ClientService interface {
1819
var _ ClientService = (*Service)(nil)
1920

2021
type Service struct {
21-
r gcore.Requester
22-
resourcesService resources.ResourceService
23-
rulesService rules.RulesService
24-
originGroupsService origingroups.OriginGroupService
25-
sslCertsService sslcerts.SSLCertService
22+
r gcore.Requester
23+
resourcesService resources.ResourceService
24+
rulesService rules.RulesService
25+
originGroupsService origingroups.OriginGroupService
26+
originShieldingService originshielding.OriginShieldingService
27+
sslCertsService sslcerts.SSLCertService
2628
}
2729

2830
func NewService(r gcore.Requester) *Service {
2931
return &Service{
30-
r: r,
31-
resourcesService: resources.NewService(r),
32-
rulesService: rules.NewService(r),
33-
originGroupsService: origingroups.NewService(r),
34-
sslCertsService: sslcerts.NewService(r),
32+
r: r,
33+
resourcesService: resources.NewService(r),
34+
rulesService: rules.NewService(r),
35+
originGroupsService: origingroups.NewService(r),
36+
originShieldingService: originshielding.NewService(r),
37+
sslCertsService: sslcerts.NewService(r),
3538
}
3639
}
3740

@@ -47,6 +50,10 @@ func (s *Service) OriginGroups() origingroups.OriginGroupService {
4750
return s.originGroupsService
4851
}
4952

53+
func (s *Service) OriginShielding() originshielding.OriginShieldingService {
54+
return s.originShieldingService
55+
}
56+
5057
func (s *Service) SSLCerts() sslcerts.SSLCertService {
5158
return s.sslCertsService
5259
}

originshielding/originshielding.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package originshielding
2+
3+
import (
4+
"context"
5+
)
6+
7+
type OriginShieldingService interface {
8+
Update(ctx context.Context, id int64, req *UpdateRequest) (*OriginShieldingData, error)
9+
Get(ctx context.Context, id int64) (*OriginShieldingData, error)
10+
GetLocations(ctx context.Context) (*OriginShieldingLocations, error)
11+
}
12+
13+
type OriginShieldingData struct {
14+
ShieldingPop int `json:"shielding_pop"`
15+
}
16+
17+
type UpdateRequest struct {
18+
ShieldingPop int `json:"shielding_pop"`
19+
}
20+
21+
type OriginShieldingLocations struct {
22+
ID int `json:"id"`
23+
Datacenter string `json:"datacenter"`
24+
Country string `json:"country"`
25+
City string `json:"city"`
26+
}

originshielding/service.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package originshielding
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"github.com/G-Core/gcorelabscdn-go/gcore"
7+
"net/http"
8+
)
9+
10+
var _ OriginShieldingService = (*Service)(nil)
11+
12+
type Service struct {
13+
r gcore.Requester
14+
}
15+
16+
func NewService(r gcore.Requester) *Service {
17+
return &Service{r: r}
18+
}
19+
20+
func (s *Service) Update(ctx context.Context, id int64, req *UpdateRequest) (*OriginShieldingData, error) {
21+
var origin_shielding OriginShieldingData
22+
if err := s.r.Request(ctx, http.MethodPut, fmt.Sprintf("/cdn/resources/%d/shielding_v2", id), req, &origin_shielding); err != nil {
23+
return nil, fmt.Errorf("request: %w", err)
24+
}
25+
return &origin_shielding, nil
26+
}
27+
28+
func (s *Service) Get(ctx context.Context, id int64) (*OriginShieldingData, error) {
29+
var origin_shielding OriginShieldingData
30+
if err := s.r.Request(ctx, http.MethodGet, fmt.Sprintf("/cdn/resources/%d/shielding_v2", id), nil, &origin_shielding); err != nil {
31+
return nil, fmt.Errorf("request: %w", err)
32+
}
33+
34+
return &origin_shielding, nil
35+
36+
}
37+
38+
func (s *Service) GetLocations(ctx context.Context) (*OriginShieldingLocations, error) {
39+
var origin_shielding_locations OriginShieldingLocations
40+
if err := s.r.Request(ctx, http.MethodGet, fmt.Sprintf("/cdn/shieldingpop_v2"), nil, &origin_shielding_locations); err != nil {
41+
return nil, fmt.Errorf("request: %w", err)
42+
}
43+
44+
return &origin_shielding_locations, nil
45+
}

0 commit comments

Comments
 (0)