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 }