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  }