github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/identity/v2/extensions/results.go (about)

     1  package extensions
     2  
     3  import (
     4  	common "github.com/vnpaycloud-console/gophercloud/v2/openstack/common/extensions"
     5  	"github.com/vnpaycloud-console/gophercloud/v2/pagination"
     6  )
     7  
     8  // ExtensionPage is a single page of Extension results.
     9  type ExtensionPage struct {
    10  	common.ExtensionPage
    11  }
    12  
    13  // IsEmpty returns true if the current page contains at least one Extension.
    14  func (page ExtensionPage) IsEmpty() (bool, error) {
    15  	is, err := ExtractExtensions(page)
    16  	return len(is) == 0, err
    17  }
    18  
    19  // ExtractExtensions accepts a Page struct, specifically an ExtensionPage struct, and extracts the
    20  // elements into a slice of Extension structs.
    21  func ExtractExtensions(page pagination.Page) ([]common.Extension, error) {
    22  	// Identity v2 adds an intermediate "values" object.
    23  	var s struct {
    24  		Extensions struct {
    25  			Values []common.Extension `json:"values"`
    26  		} `json:"extensions"`
    27  	}
    28  	err := page.(ExtensionPage).ExtractInto(&s)
    29  	return s.Extensions.Values, err
    30  }