github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/apigw/v2/app_code/List.go (about) 1 package app_code 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 } 14 15 func List(client *golangsdk.ServiceClient, opts ListOpts) ([]CodeResp, error) { 16 q, err := golangsdk.BuildQueryString(&opts) 17 if err != nil { 18 return nil, err 19 } 20 pages, err := pagination.Pager{ 21 Client: client, 22 InitialURL: client.ServiceURL("apigw", "instances", opts.GatewayID, "apps") + q.String(), 23 CreatePage: func(r pagination.NewPageResult) pagination.NewPage { 24 return AppCodePage{NewSinglePageBase: pagination.NewSinglePageBase{NewPageResult: r}} 25 }, 26 }.NewAllPages() 27 28 if err != nil { 29 return nil, err 30 } 31 return ExtractAppCodes(pages) 32 } 33 34 type AppCodePage struct { 35 pagination.NewSinglePageBase 36 } 37 38 func ExtractAppCodes(r pagination.NewPage) ([]CodeResp, error) { 39 var s struct { 40 AppCodes []CodeResp `json:"app_codes"` 41 } 42 err := extract.Into(bytes.NewReader((r.(AppCodePage)).Body), &s) 43 return s.AppCodes, err 44 }