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  }