remove mapstructure from identity,networking,objectstorage,orchestration,pagination
diff --git a/openstack/identity/v3/endpoints/results.go b/openstack/identity/v3/endpoints/results.go
index 7c20b8c..09e58e5 100644
--- a/openstack/identity/v3/endpoints/results.go
+++ b/openstack/identity/v3/endpoints/results.go
@@ -1,7 +1,6 @@
package endpoints
import (
- "github.com/mitchellh/mapstructure"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/pagination"
)
@@ -13,17 +12,11 @@
// Extract interprets a GetResult, CreateResult or UpdateResult as a concrete Endpoint.
// An error is returned if the original call or the extraction failed.
func (r commonResult) Extract() (*Endpoint, error) {
- if r.Err != nil {
- return nil, r.Err
+ var s struct {
+ Endpoint *Endpoint `json:"endpoint"`
}
-
- var res struct {
- Endpoint `json:"endpoint"`
- }
-
- err := mapstructure.Decode(r.Body, &res)
-
- return &res.Endpoint, err
+ err := r.ExtractInto(&s)
+ return s.Endpoint, err
}
// CreateResult is the deferred result of a Create call.
@@ -48,12 +41,12 @@
// Endpoint describes the entry point for another service's API.
type Endpoint struct {
- ID string `mapstructure:"id" json:"id"`
- Availability gophercloud.Availability `mapstructure:"interface" json:"interface"`
- Name string `mapstructure:"name" json:"name"`
- Region string `mapstructure:"region" json:"region"`
- ServiceID string `mapstructure:"service_id" json:"service_id"`
- URL string `mapstructure:"url" json:"url"`
+ ID string `json:"id"`
+ Availability gophercloud.Availability `json:"interface"`
+ Name string `json:"name"`
+ Region string `json:"region"`
+ ServiceID string `json:"service_id"`
+ URL string `json:"url"`
}
// EndpointPage is a single page of Endpoint results.
@@ -64,19 +57,15 @@
// IsEmpty returns true if no Endpoints were returned.
func (p EndpointPage) IsEmpty() (bool, error) {
es, err := ExtractEndpoints(p)
- if err != nil {
- return true, err
- }
- return len(es) == 0, nil
+ return len(es) == 0, err
}
// ExtractEndpoints extracts an Endpoint slice from a Page.
func ExtractEndpoints(page pagination.Page) ([]Endpoint, error) {
- var response struct {
- Endpoints []Endpoint `mapstructure:"endpoints"`
+ r := page.(EndpointPage)
+ var s struct {
+ Endpoints []Endpoint `json:"endpoints"`
}
-
- err := mapstructure.Decode(page.(EndpointPage).Body, &response)
-
- return response.Endpoints, err
+ err := r.ExtractInto(&s)
+ return s.Endpoints, err
}