Merge pull request #372 from jrperritt/get-object-cdn-url
Get object CDN URL; Closes #371
diff --git a/acceptance/rackspace/objectstorage/v1/cdnobjects_test.go b/acceptance/rackspace/objectstorage/v1/cdnobjects_test.go
index 6e477ae..0c0ab8a 100644
--- a/acceptance/rackspace/objectstorage/v1/cdnobjects_test.go
+++ b/acceptance/rackspace/objectstorage/v1/cdnobjects_test.go
@@ -36,11 +36,15 @@
raxCDNClient, err := createClient(t, true)
th.AssertNoErr(t, err)
- enableResult := raxCDNContainers.Enable(raxCDNClient, "gophercloud-test", raxCDNContainers.EnableOpts{CDNEnabled: true, TTL: 900})
- th.AssertNoErr(t, enableResult.Err)
- t.Logf("Headers from Enable CDN Container request: %+v\n", enableResult.Header)
+ enableHeader, err := raxCDNContainers.Enable(raxCDNClient, "gophercloud-test", raxCDNContainers.EnableOpts{CDNEnabled: true, TTL: 900}).Extract()
+ th.AssertNoErr(t, err)
+ t.Logf("Headers from Enable CDN Container request: %+v\n", enableHeader)
- deleteResult := raxCDNObjects.Delete(raxCDNClient, "gophercloud-test", "test-object", nil)
- th.AssertNoErr(t, deleteResult.Err)
- t.Logf("Headers from Delete CDN Object request: %+v\n", deleteResult.Err)
+ objCDNURL, err := raxCDNObjects.CDNURL(raxCDNClient, "gophercloud-test", "test-object")
+ th.AssertNoErr(t, err)
+ t.Logf("%s CDN URL: %s\n", "test_object", objCDNURL)
+
+ deleteHeader, err := raxCDNObjects.Delete(raxCDNClient, "gophercloud-test", "test-object", nil).Extract()
+ th.AssertNoErr(t, err)
+ t.Logf("Headers from Delete CDN Object request: %+v\n", deleteHeader)
}
diff --git a/rackspace/objectstorage/v1/cdnobjects/request.go b/rackspace/objectstorage/v1/cdnobjects/request.go
new file mode 100644
index 0000000..540e0cd
--- /dev/null
+++ b/rackspace/objectstorage/v1/cdnobjects/request.go
@@ -0,0 +1,15 @@
+package cdnobjects
+
+import (
+ "github.com/rackspace/gophercloud"
+ "github.com/rackspace/gophercloud/rackspace/objectstorage/v1/cdncontainers"
+)
+
+// CDNURL returns the unique CDN URI for the given container and object.
+func CDNURL(c *gophercloud.ServiceClient, containerName, objectName string) (string, error) {
+ h, err := cdncontainers.Get(c, containerName).Extract()
+ if err != nil {
+ return "", err
+ }
+ return h.CDNUri + "/" + objectName, nil
+}