Use gophercloud.Result in objectstorage.
diff --git a/openstack/objectstorage/v1/containers/requests.go b/openstack/objectstorage/v1/containers/requests.go
index ce3f540..004ef82 100644
--- a/openstack/objectstorage/v1/containers/requests.go
+++ b/openstack/objectstorage/v1/containers/requests.go
@@ -115,7 +115,7 @@
MoreHeaders: h,
OkCodes: []int{201, 204},
})
- res.Resp = &resp.HttpResponse
+ res.Headers = resp.HttpResponse.Header
res.Err = err
return res
}
@@ -127,7 +127,7 @@
MoreHeaders: c.Provider.AuthenticatedHeaders(),
OkCodes: []int{204},
})
- res.Resp = &resp.HttpResponse
+ res.Headers = resp.HttpResponse.Header
res.Err = err
return res
}
@@ -186,7 +186,7 @@
MoreHeaders: h,
OkCodes: []int{204},
})
- res.Resp = &resp.HttpResponse
+ res.Headers = resp.HttpResponse.Header
res.Err = err
return res
}
@@ -200,7 +200,7 @@
MoreHeaders: c.Provider.AuthenticatedHeaders(),
OkCodes: []int{204},
})
- res.Resp = &resp.HttpResponse
+ res.Headers = resp.HttpResponse.Header
res.Err = err
return res
}
diff --git a/openstack/objectstorage/v1/containers/requests_test.go b/openstack/objectstorage/v1/containers/requests_test.go
index 9562676..a134272 100644
--- a/openstack/objectstorage/v1/containers/requests_test.go
+++ b/openstack/objectstorage/v1/containers/requests_test.go
@@ -136,7 +136,7 @@
})
options := CreateOpts{ContentType: "application/json", Metadata: map[string]string{"foo": "bar"}}
- headers, err := Create(fake.ServiceClient(), "testContainer", options).ExtractHeaders()
+ headers, err := Create(fake.ServiceClient(), "testContainer", options).Extract()
if err != nil {
t.Fatalf("Unexpected error creating container: %v", err)
}
@@ -154,7 +154,7 @@
w.WriteHeader(http.StatusNoContent)
})
- _, err := Delete(fake.ServiceClient(), "testContainer").ExtractHeaders()
+ _, err := Delete(fake.ServiceClient(), "testContainer").Extract()
if err != nil {
t.Fatalf("Unexpected error deleting container: %v", err)
}
@@ -172,7 +172,7 @@
})
options := &UpdateOpts{Metadata: map[string]string{"foo": "bar"}}
- _, err := Update(fake.ServiceClient(), "testContainer", options).ExtractHeaders()
+ _, err := Update(fake.ServiceClient(), "testContainer", options).Extract()
if err != nil {
t.Fatalf("Unexpected error updating container metadata: %v", err)
}
diff --git a/openstack/objectstorage/v1/containers/results.go b/openstack/objectstorage/v1/containers/results.go
index 227a9dc..3a6d3be 100644
--- a/openstack/objectstorage/v1/containers/results.go
+++ b/openstack/objectstorage/v1/containers/results.go
@@ -2,9 +2,10 @@
import (
"fmt"
+ "net/http"
"strings"
- objectstorage "github.com/rackspace/gophercloud/openstack/objectstorage/v1"
+ "github.com/rackspace/gophercloud"
"github.com/rackspace/gophercloud/pagination"
"github.com/mitchellh/mapstructure"
@@ -98,7 +99,7 @@
// GetResult represents the result of a get operation.
type GetResult struct {
- objectstorage.CommonResult
+ gophercloud.Result
}
// ExtractMetadata is a function that takes a GetResult (of type *http.Response)
@@ -108,7 +109,7 @@
return nil, gr.Err
}
metadata := make(map[string]string)
- for k, v := range gr.Resp.Header {
+ for k, v := range gr.Headers {
if strings.HasPrefix(k, "X-Container-Meta-") {
key := strings.TrimPrefix(k, "X-Container-Meta-")
metadata[key] = v[0]
@@ -117,23 +118,32 @@
return metadata, nil
}
+type headerResult struct {
+ gophercloud.Result
+}
+
+// Extract pulls the unmodified headers from a Create, Update, or Delete result.
+func (result headerResult) Extract() (http.Header, error) {
+ return result.Headers, result.Err
+}
+
// CreateResult represents the result of a create operation. To extract the
// the headers from the HTTP response, you can invoke the 'ExtractHeaders'
// method on the result struct.
type CreateResult struct {
- objectstorage.CommonResult
+ headerResult
}
// UpdateResult represents the result of an update operation. To extract the
// the headers from the HTTP response, you can invoke the 'ExtractHeaders'
// method on the result struct.
type UpdateResult struct {
- objectstorage.CommonResult
+ headerResult
}
// DeleteResult represents the result of a delete operation. To extract the
// the headers from the HTTP response, you can invoke the 'ExtractHeaders'
// method on the result struct.
type DeleteResult struct {
- objectstorage.CommonResult
+ headerResult
}