// Get is a function that retrieves the metadata of a container. To extract just // the custom metadata, pass the GetResult response to the ExtractMetadata // function. func Get(c *gophercloud.ServiceClient, containerName string) (r GetResult) { resp, err := c.Request("HEAD", getURL(c, containerName), &gophercloud.RequestOpts{ OkCodes: []int{200, 204}, }) if resp != nil { r.Header = resp.Header } r.Err = err return }
// Validate determines if a specified token is valid or not. func Validate(c *gophercloud.ServiceClient, token string) (bool, error) { resp, err := c.Request("HEAD", tokenURL(c), &gophercloud.RequestOpts{ MoreHeaders: subjectTokenHeaders(c, token), OkCodes: []int{204, 404}, }) if err != nil { return false, err } return resp.StatusCode == 204, nil }
// Get is a function that retrieves the metadata of an object. To extract just the custom // metadata, pass the GetResult response to the ExtractMetadata function. func Get(c *gophercloud.ServiceClient, containerName, objectName string, opts GetOptsBuilder) (r GetResult) { url := getURL(c, containerName, objectName) if opts != nil { query, err := opts.ToObjectGetQuery() if err != nil { r.Err = err return } url += query } resp, err := c.Request("HEAD", url, &gophercloud.RequestOpts{ OkCodes: []int{200, 204}, }) if resp != nil { r.Header = resp.Header } r.Err = err return }
// Update accepts a slice of Patch operations (Insertion, Append, Replacement or Removal) and // updates an existing CDN service using the values provided. idOrURL can be either the service's // URL or its ID. For example, both "96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0" and // "https://global.cdn.api.rackspacecloud.com/v1.0/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0" // are valid options for idOrURL. func Update(c *gophercloud.ServiceClient, idOrURL string, opts UpdateOpts) (r UpdateResult) { var url string if strings.Contains(idOrURL, "/") { url = idOrURL } else { url = updateURL(c, idOrURL) } b := make([]map[string]interface{}, len(opts)) for i, patch := range opts { b[i] = patch.ToCDNServiceUpdateMap() } resp, err := c.Request("PATCH", url, &gophercloud.RequestOpts{ JSONBody: &b, OkCodes: []int{202}, }) r.Header = resp.Header r.Err = err return }
// Update is a function that creates, updates, or deletes an account's metadata. // To extract the headers returned, call the Extract method on the UpdateResult. func Update(c *gophercloud.ServiceClient, opts UpdateOptsBuilder) (r UpdateResult) { h := make(map[string]string) if opts != nil { headers, err := opts.ToAccountUpdateMap() if err != nil { r.Err = err return } for k, v := range headers { h[k] = v } } resp, err := c.Request("POST", updateURL(c), &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{201, 202, 204}, }) if resp != nil { r.Header = resp.Header } r.Err = err return }
// Get is a function that retrieves an account's metadata. To extract just the // custom metadata, call the ExtractMetadata method on the GetResult. To extract // all the headers that are returned (including the metadata), call the // ExtractHeader method on the GetResult. func Get(c *gophercloud.ServiceClient, opts GetOptsBuilder) (r GetResult) { h := make(map[string]string) if opts != nil { headers, err := opts.ToAccountGetMap() if err != nil { r.Err = err return } for k, v := range headers { h[k] = v } } resp, err := c.Request("HEAD", getURL(c), &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{204}, }) if resp != nil { r.Header = resp.Header } r.Err = err return }
// Create is a function that creates a new container. func Create(c *gophercloud.ServiceClient, containerName string, opts CreateOptsBuilder) (r CreateResult) { h := make(map[string]string) if opts != nil { headers, err := opts.ToContainerCreateMap() if err != nil { r.Err = err return } for k, v := range headers { h[k] = v } } resp, err := c.Request("PUT", createURL(c, containerName), &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{201, 202, 204}, }) if resp != nil { r.Header = resp.Header } r.Err = err return }
// Copy is a function that copies one object to another. func Copy(c *gophercloud.ServiceClient, containerName, objectName string, opts CopyOptsBuilder) (r CopyResult) { h := make(map[string]string) headers, err := opts.ToObjectCopyMap() if err != nil { r.Err = err return } for k, v := range headers { h[k] = v } url := copyURL(c, containerName, objectName) resp, err := c.Request("COPY", url, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{201}, }) if resp != nil { r.Header = resp.Header } r.Err = err return }