Skip to content

Commit 8ac9633

Browse files
authored
feat(edge_services): add route rule search endpoint (#2637)
1 parent 4a81925 commit 8ac9633

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

api/edge_services/v1beta1/edge_services_sdk.go

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -961,6 +961,43 @@ func (enum *SearchBackendStagesRequestOrderBy) UnmarshalJSON(data []byte) error
961961
return nil
962962
}
963963

964+
type SearchRouteRulesRequestOrderBy string
965+
966+
const (
967+
SearchRouteRulesRequestOrderByCreatedAtAsc = SearchRouteRulesRequestOrderBy("created_at_asc")
968+
SearchRouteRulesRequestOrderByCreatedAtDesc = SearchRouteRulesRequestOrderBy("created_at_desc")
969+
)
970+
971+
func (enum SearchRouteRulesRequestOrderBy) String() string {
972+
if enum == "" {
973+
// return default value if empty
974+
return string(SearchRouteRulesRequestOrderByCreatedAtAsc)
975+
}
976+
return string(enum)
977+
}
978+
979+
func (enum SearchRouteRulesRequestOrderBy) Values() []SearchRouteRulesRequestOrderBy {
980+
return []SearchRouteRulesRequestOrderBy{
981+
"created_at_asc",
982+
"created_at_desc",
983+
}
984+
}
985+
986+
func (enum SearchRouteRulesRequestOrderBy) MarshalJSON() ([]byte, error) {
987+
return []byte(fmt.Sprintf(`"%s"`, enum)), nil
988+
}
989+
990+
func (enum *SearchRouteRulesRequestOrderBy) UnmarshalJSON(data []byte) error {
991+
tmp := ""
992+
993+
if err := json.Unmarshal(data, &tmp); err != nil {
994+
return err
995+
}
996+
997+
*enum = SearchRouteRulesRequestOrderBy(SearchRouteRulesRequestOrderBy(tmp).String())
998+
return nil
999+
}
1000+
9641001
type SearchWafStagesRequestOrderBy string
9651002

9661003
const (
@@ -2184,6 +2221,28 @@ type ListRouteRulesRequest struct {
21842221
type ListRouteRulesResponse struct {
21852222
// RouteRules: list of rules to be checked against every HTTP request. The first matching rule will forward the request to its specified backend stage. If no rules are matched, the request is forwarded to the WAF stage defined by `waf_stage_id`.
21862223
RouteRules []*RouteRule `json:"route_rules"`
2224+
2225+
// TotalCount: count of all route rules matching the requested criteria.
2226+
TotalCount uint64 `json:"total_count"`
2227+
}
2228+
2229+
// UnsafeGetTotalCount should not be used
2230+
// Internal usage only
2231+
func (r *ListRouteRulesResponse) UnsafeGetTotalCount() uint64 {
2232+
return r.TotalCount
2233+
}
2234+
2235+
// UnsafeAppend should not be used
2236+
// Internal usage only
2237+
func (r *ListRouteRulesResponse) UnsafeAppend(res any) (uint64, error) {
2238+
results, ok := res.(*ListRouteRulesResponse)
2239+
if !ok {
2240+
return 0, errors.New("%T type cannot be appended to type %T", res, r)
2241+
}
2242+
2243+
r.RouteRules = append(r.RouteRules, results.RouteRules...)
2244+
r.TotalCount += uint64(len(results.RouteRules))
2245+
return uint64(len(results.RouteRules)), nil
21872246
}
21882247

21892248
// ListRouteStagesRequest: list route stages request.
@@ -2348,6 +2407,20 @@ type SearchBackendStagesRequest struct {
23482407
LBID *string `json:"-"`
23492408
}
23502409

2410+
// SearchRouteRulesRequest: search route rules request.
2411+
type SearchRouteRulesRequest struct {
2412+
// OrderBy: default value: created_at_asc
2413+
OrderBy SearchRouteRulesRequestOrderBy `json:"-"`
2414+
2415+
Page *int32 `json:"-"`
2416+
2417+
PageSize *uint32 `json:"-"`
2418+
2419+
OrganizationID *string `json:"-"`
2420+
2421+
ProjectID *string `json:"-"`
2422+
}
2423+
23512424
// SearchWafStagesRequest: search waf stages request.
23522425
type SearchWafStagesRequest struct {
23532426
// OrderBy: default value: created_at_asc
@@ -3687,6 +3760,37 @@ func (s *API) AddRouteRules(req *AddRouteRulesRequest, opts ...scw.RequestOption
36873760
return &resp, nil
36883761
}
36893762

3763+
// SearchRouteRules: List all route rules of an organization or project.
3764+
func (s *API) SearchRouteRules(req *SearchRouteRulesRequest, opts ...scw.RequestOption) (*ListRouteRulesResponse, error) {
3765+
var err error
3766+
3767+
defaultPageSize, exist := s.client.GetDefaultPageSize()
3768+
if (req.PageSize == nil || *req.PageSize == 0) && exist {
3769+
req.PageSize = &defaultPageSize
3770+
}
3771+
3772+
query := url.Values{}
3773+
parameter.AddToQuery(query, "order_by", req.OrderBy)
3774+
parameter.AddToQuery(query, "page", req.Page)
3775+
parameter.AddToQuery(query, "page_size", req.PageSize)
3776+
parameter.AddToQuery(query, "organization_id", req.OrganizationID)
3777+
parameter.AddToQuery(query, "project_id", req.ProjectID)
3778+
3779+
scwReq := &scw.ScalewayRequest{
3780+
Method: "GET",
3781+
Path: "/edge-services/v1beta1/search-route-rules",
3782+
Query: query,
3783+
}
3784+
3785+
var resp ListRouteRulesResponse
3786+
3787+
err = s.client.Do(scwReq, &resp, opts...)
3788+
if err != nil {
3789+
return nil, err
3790+
}
3791+
return &resp, nil
3792+
}
3793+
36903794
// CheckDomain:
36913795
func (s *API) CheckDomain(req *CheckDomainRequest, opts ...scw.RequestOption) (*CheckDomainResponse, error) {
36923796
var err error

0 commit comments

Comments
 (0)