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

     1  package nameservers
     2  
     3  import (
     4  	"github.com/chnsz/golangsdk"
     5  )
     6  
     7  type ListOpts struct {
     8  	// Type of the name server. Value options:
     9  	// public: indicates a public name server.
    10  	// private: indicates a private name server.
    11  	// It is left blank by default.
    12  	Type string `q:"type"`
    13  	// Region ID. When you query a public name server, leave this parameter blank.
    14  	// Exact matching will work. It is left blank by default.
    15  	Region string `q:"region"`
    16  }
    17  
    18  // ToNameServersQuery formats a ListOpts into a query string.
    19  func (opts ListOpts) ToNameServersQuery() (string, error) {
    20  	q, err := golangsdk.BuildQueryString(opts)
    21  	return q.String(), err
    22  }
    23  
    24  // List implements a nameserver List request.
    25  func List(client *golangsdk.ServiceClient, opts *ListOpts) ([]NameServer, error) {
    26  	url := baseURL(client)
    27  	if opts != nil {
    28  		query, err := opts.ToNameServersQuery()
    29  		if err != nil {
    30  			return nil, err
    31  		}
    32  		url += query
    33  	}
    34  
    35  	var s struct {
    36  		NameServers []NameServer `json:"nameservers"`
    37  	}
    38  	_, err := client.Get(url, &s, nil)
    39  	return s.NameServers, err
    40  }