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
+}