github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/tms/v1/providers/requests.go (about)

     1  package providers
     2  
     3  import (
     4  	"github.com/chnsz/golangsdk"
     5  	"github.com/chnsz/golangsdk/pagination"
     6  )
     7  
     8  // ListOpts allows to filter supported provider list.
     9  type ListOpts struct {
    10  	// Specifies the display language, defaults to 'zh-cn'.
    11  	Locale string `q:"locale"`
    12  	// Number of records to be queried.
    13  	// The valid value is range from 1 to 200, defaults to 200.
    14  	Limit int `q:"limit"`
    15  	// Specifies the index position, which starts from the next data record specified by offset.
    16  	// The value must be a number and connot be a negative number, defaults to 0.
    17  	Offset string `q:"offset"`
    18  	// Specifies the cloud service name.
    19  	Provider string `q:"provider"`
    20  }
    21  
    22  // List is a method to query the supported provider list using given parameters.
    23  func List(client *golangsdk.ServiceClient, opts ListOpts) ([]Provider, error) {
    24  	url := queryURL(client)
    25  	query, err := golangsdk.BuildQueryString(opts)
    26  	if err != nil {
    27  		return nil, err
    28  	}
    29  	url += query.String()
    30  
    31  	pages, err := pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page {
    32  		p := ProviderPage{pagination.OffsetPageBase{PageResult: r}}
    33  		return p
    34  	}).AllPages()
    35  	if err != nil {
    36  		return nil, err
    37  	}
    38  	return extractProviders(pages)
    39  }