github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/apigw/v2/app/List.go (about) 1 package app 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 ListOpts struct { 12 GatewayID string `json:"-"` 13 ID string `q:"id"` 14 Name string `q:"mame,"` 15 Status string `q:"status"` 16 AppKey string `q:"app_key"` 17 Creator string `q:"creator"` 18 PreciseSearch string `q:"precise_search"` 19 } 20 21 func List(client *golangsdk.ServiceClient, opts ListOpts) ([]AppResp, 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, "apps") + q.String(), 29 CreatePage: func(r pagination.NewPageResult) pagination.NewPage { 30 return EnvPage{NewSinglePageBase: pagination.NewSinglePageBase{NewPageResult: r}} 31 }, 32 }.NewAllPages() 33 34 if err != nil { 35 return nil, err 36 } 37 return ExtractEnvs(pages) 38 } 39 40 type EnvPage struct { 41 pagination.NewSinglePageBase 42 } 43 44 func ExtractEnvs(r pagination.NewPage) ([]AppResp, error) { 45 var s struct { 46 Gateways []AppResp `json:"apps"` 47 } 48 err := extract.Into(bytes.NewReader((r.(EnvPage)).Body), &s) 49 return s.Gateways, err 50 }