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 }