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  }