Starting documentation and privatising unnecessary exports
diff --git a/openstack/networking/v2/extensions/results.go b/openstack/networking/v2/extensions/results.go
index c67bd01..42e7fc3 100644
--- a/openstack/networking/v2/extensions/results.go
+++ b/openstack/networking/v2/extensions/results.go
@@ -5,6 +5,7 @@
"github.com/rackspace/gophercloud/pagination"
)
+// Extension is a struct that represents a Neutron extension.
type Extension struct {
Updated string `json:"updated"`
Name string `json:"name"`
@@ -14,10 +15,13 @@
Description string `json:"description"`
}
+// ExtensionPage is the page returned by a pager when traversing over a
+// collection of extensions.
type ExtensionPage struct {
pagination.SinglePageBase
}
+// IsEmpty checks whether an ExtensionPage struct is empty.
func (r ExtensionPage) IsEmpty() (bool, error) {
is, err := ExtractExtensions(r)
if err != nil {
@@ -26,6 +30,9 @@
return len(is) == 0, nil
}
+// ExtractExtensions accepts a Page struct, specifically an ExtensionPage
+// struct, and extracts the elements into a slice of Extension structs. In other
+// words, a generic collection is mapped into a relevant slice.
func ExtractExtensions(page pagination.Page) ([]Extension, error) {
var resp struct {
Extensions []Extension `mapstructure:"extensions"`