github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/apigw/v2/app_auth/GetBoundApis.go (about)

     1  package app_auth
     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 ListBoundOpts struct {
    12  	GatewayID string `json:"-"`
    13  	AppID     string `q:"app_id" required:"true"`
    14  	ApiID     string `q:"api_id"`
    15  	ApiName   string `q:"api_name"`
    16  	GroupID   string `q:"group_id"`
    17  	GroupName string `q:"group_name"`
    18  	EnvID     string `q:"env_id"`
    19  }
    20  
    21  func ListAPIBound(client *golangsdk.ServiceClient, opts ListBoundOpts) ([]ApiAuth, error) {
    22  	q, err := golangsdk.BuildQueryString(&opts)
    23  	if err != nil {
    24  		return nil, err
    25  	}
    26  	pages, err := pagination.Pager{
    27  		Client: client,
    28  		InitialURL: client.ServiceURL("apigw", "instances", opts.GatewayID, "app-auths",
    29  			"binded-apis") + q.String(),
    30  		CreatePage: func(r pagination.NewPageResult) pagination.NewPage {
    31  			return BindingPage{NewSinglePageBase: pagination.NewSinglePageBase{NewPageResult: r}}
    32  		},
    33  	}.NewAllPages()
    34  
    35  	if err != nil {
    36  		return nil, err
    37  	}
    38  	return ExtractAuths(pages)
    39  }
    40  
    41  type BindingPage struct {
    42  	pagination.NewSinglePageBase
    43  }
    44  
    45  func ExtractAuths(r pagination.NewPage) ([]ApiAuth, error) {
    46  	var s struct {
    47  		Bindings []ApiAuth `json:"auths"`
    48  	}
    49  	err := extract.Into(bytes.NewReader((r.(BindingPage)).Body), &s)
    50  	return s.Bindings, err
    51  }
    52  
    53  type ApiAuth struct {
    54  	ID             string   `json:"id"`
    55  	ApiID          string   `json:"api_id"`
    56  	ApiName        string   `json:"api_name"`
    57  	GroupName      string   `json:"group_name"`
    58  	ApiType        int      `json:"api_type"`
    59  	ApiDescription string   `json:"api_remark"`
    60  	EnvID          string   `json:"env_id"`
    61  	AuthRole       string   `json:"auth_role"`
    62  	AuthTime       string   `json:"auth_time"`
    63  	AppName        string   `json:"app_name"`
    64  	AppDescription string   `json:"app_remark"`
    65  	AppType        string   `json:"app_type"`
    66  	AppCreator     string   `json:"app_creator"`
    67  	PublishID      string   `json:"publish_id"`
    68  	GroupID        string   `json:"group_id"`
    69  	AuthTunnel     string   `json:"auth_tunnel"`
    70  	AuthWhitelist  []string `json:"auth_whitelist"`
    71  	AuthBlacklist  []string `json:"auth_blacklist"`
    72  	VisitParam     string   `json:"visit_param"`
    73  	EnvName        string   `json:"env_name"`
    74  	AppID          string   `json:"app_id"`
    75  }