github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/apigw/v2/env_vars/List.go (about) 1 package env_vars 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 GroupID string `q:"group_id" required:"true"` 14 EnvID string `q:"env_id"` 15 VariableName string `q:"variable_name"` 16 PreciseSearch string `q:"precise_search"` 17 } 18 19 func List(client *golangsdk.ServiceClient, opts ListOpts) ([]EnvVarsResp, 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, "env-variables") + q.String(), 27 CreatePage: func(r pagination.NewPageResult) pagination.NewPage { 28 return EnvPage{NewSinglePageBase: pagination.NewSinglePageBase{NewPageResult: r}} 29 }, 30 }.NewAllPages() 31 32 if err != nil { 33 return nil, err 34 } 35 return ExtractEnvs(pages) 36 } 37 38 type EnvPage struct { 39 pagination.NewSinglePageBase 40 } 41 42 func ExtractEnvs(r pagination.NewPage) ([]EnvVarsResp, error) { 43 var s struct { 44 Gateways []EnvVarsResp `json:"variables"` 45 } 46 err := extract.Into(bytes.NewReader((r.(EnvPage)).Body), &s) 47 return s.Gateways, err 48 }