github.com/gophercloud/gophercloud@v1.11.0/openstack/cdn/v1/serviceassets/requests.go (about) 1 package serviceassets 2 3 import ( 4 "strings" 5 6 "github.com/gophercloud/gophercloud" 7 ) 8 9 // DeleteOptsBuilder allows extensions to add additional parameters to the Delete 10 // request. 11 type DeleteOptsBuilder interface { 12 ToCDNAssetDeleteParams() (string, error) 13 } 14 15 // DeleteOpts is a structure that holds options for deleting CDN service assets. 16 type DeleteOpts struct { 17 // If all is set to true, specifies that the delete occurs against all of the 18 // assets for the service. 19 All bool `q:"all"` 20 // Specifies the relative URL of the asset to be deleted. 21 URL string `q:"url"` 22 } 23 24 // ToCDNAssetDeleteParams formats a DeleteOpts into a query string. 25 func (opts DeleteOpts) ToCDNAssetDeleteParams() (string, error) { 26 q, err := gophercloud.BuildQueryString(opts) 27 return q.String(), err 28 } 29 30 // Delete accepts a unique service ID or URL and deletes the CDN service asset associated with 31 // it. For example, both "96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0" and 32 // "https://global.cdn.api.rackspacecloud.com/v1.0/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0" 33 // are valid options for idOrURL. 34 func Delete(c *gophercloud.ServiceClient, idOrURL string, opts DeleteOptsBuilder) (r DeleteResult) { 35 var url string 36 if strings.Contains(idOrURL, "/") { 37 url = idOrURL 38 } else { 39 url = deleteURL(c, idOrURL) 40 } 41 if opts != nil { 42 q, err := opts.ToCDNAssetDeleteParams() 43 if err != nil { 44 r.Err = err 45 return 46 } 47 url += q 48 } 49 resp, err := c.Delete(url, nil) 50 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 51 return 52 }