github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/fgs/v2/application/requests.go (about)

     1  package application
     2  
     3  import (
     4  	"github.com/chnsz/golangsdk"
     5  	"github.com/chnsz/golangsdk/pagination"
     6  )
     7  
     8  // ListOpts is the structure that used to query application template list.
     9  type ListOpts struct {
    10  	// Template runtime.
    11  	Runtime string `q:"runtime"`
    12  	// Template category.
    13  	Category string `q:"category"`
    14  	// The current query index.
    15  	Marker int `q:"marker"`
    16  	// Maximum number of templates to obtain in a request.
    17  	MaxItems int `q:"maxitems"`
    18  }
    19  
    20  // ListTemplates is a method to query the list of the application templates using given parameters.
    21  func ListTemplates(client *golangsdk.ServiceClient, opts ListOpts) ([]Template, error) {
    22  	query, err := golangsdk.BuildQueryString(opts)
    23  	if err != nil {
    24  		return nil, err
    25  	}
    26  	url := listURL(client) + query.String()
    27  	pages, err := pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page {
    28  		p := TemplatePage{pagination.MarkerPageBase{PageResult: r}}
    29  		p.MarkerPageBase.Owner = p
    30  		return p
    31  	}).AllPages()
    32  
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  	pageInfo, err := extractPageInfo(pages)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  	return pageInfo.Templates, nil
    41  }