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 }