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  }