github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/apigw/v2/tr_policy/ListBoundPolicies.go (about) 1 package throttling_policy 2 3 import ( 4 "bytes" 5 6 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 7 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 8 "github.com/opentelekomcloud/gophertelekomcloud/pagination" 9 ) 10 11 type ListBindingOpts struct { 12 GatewayID string `json:"-"` 13 ApiID string `q:"api_id"` 14 ThrottleID string `q:"throttle_id"` 15 ThrottleName string `q:"throttle_name"` 16 EnvID string `q:"env_id"` 17 } 18 19 func ListBoundPolicies(client *golangsdk.ServiceClient, opts ListBindingOpts) ([]ThrottlingBindResp, error) { 20 q, err := golangsdk.BuildQueryString(&opts) 21 if err != nil { 22 return nil, err 23 } 24 pages, err := pagination.Pager{ 25 Client: client, 26 InitialURL: client.ServiceURL("apigw", "instances", opts.GatewayID, "throttle-bindings", 27 "binded-throttles") + q.String(), 28 CreatePage: func(r pagination.NewPageResult) pagination.NewPage { 29 return BindingPage{NewSinglePageBase: pagination.NewSinglePageBase{NewPageResult: r}} 30 }, 31 }.NewAllPages() 32 33 if err != nil { 34 return nil, err 35 } 36 return ExtractPolicies(pages) 37 } 38 39 func ExtractPolicies(r pagination.NewPage) ([]ThrottlingBindResp, error) { 40 var s struct { 41 Bindings []ThrottlingBindResp `json:"throttles"` 42 } 43 err := extract.Into(bytes.NewReader((r.(BindingPage)).Body), &s) 44 return s.Bindings, err 45 } 46 47 type ThrottlingBindResp struct { 48 AppCallLimits int `json:"app_call_limits"` 49 Name string `json:"name"` 50 TimeUnit string `json:"time_unit"` 51 Description string `json:"remark"` 52 ApiCallLimits int `json:"api_call_limits"` 53 Type int `json:"type"` 54 EnableAdaptiveControl string `json:"enable_adaptive_control"` 55 UserCallLimits int `json:"user_call_limits"` 56 TimeInterval int `json:"time_interval"` 57 IpCallLimits int `json:"ip_call_limits"` 58 ID string `json:"id"` 59 BindNum int `json:"bind_num"` 60 IsIncluSpecialThrottle int `json:"is_inclu_special_throttle"` 61 CreateTime string `json:"create_time"` 62 EnvName string `json:"env_name"` 63 BindID string `json:"bind_id"` 64 BindTime string `json:"bind_time"` 65 }