terraform/vendor/github.com/sethvargo/go-fastly/purge.go

131 lines
2.5 KiB
Go

package fastly
import "fmt"
// Purge is a response from a purge request.
type Purge struct {
// Status is the status of the purge, usually "ok".
Status string `mapstructure:"status"`
// ID is the unique ID of the purge request.
ID string `mapstructure:"id"`
}
// PurgeInput is used as input to the Purge function.
type PurgeInput struct {
// URL is the URL to purge (required).
URL string
// Soft performs a soft purge.
Soft bool
}
// Purge instantly purges an individual URL.
func (c *Client) Purge(i *PurgeInput) (*Purge, error) {
if i.URL == "" {
return nil, ErrMissingURL
}
req, err := c.RawRequest("PURGE", i.URL, nil)
if err != nil {
return nil, err
}
if i.Soft {
req.Header.Set("Fastly-Soft-Purge", "1")
}
resp, err := checkResp(c.HTTPClient.Do(req))
if err != nil {
return nil, err
}
var r *Purge
if err := decodeJSON(&r, resp.Body); err != nil {
return nil, err
}
return r, nil
}
// PurgeKeyInput is used as input to the Purge function.
type PurgeKeyInput struct {
// Service is the ID of the service (required).
Service string
// Key is the key to purge (required).
Key string
// Soft performs a soft purge.
Soft bool
}
// PurgeKey instantly purges a particular service of items tagged with a key.
func (c *Client) PurgeKey(i *PurgeKeyInput) (*Purge, error) {
if i.Service == "" {
return nil, ErrMissingService
}
if i.Key == "" {
return nil, ErrMissingKey
}
path := fmt.Sprintf("/service/%s/purge/%s", i.Service, i.Key)
req, err := c.RawRequest("POST", path, nil)
if err != nil {
return nil, err
}
if i.Soft {
req.Header.Set("Fastly-Soft-Purge", "1")
}
resp, err := checkResp(c.HTTPClient.Do(req))
if err != nil {
return nil, err
}
var r *Purge
if err := decodeJSON(&r, resp.Body); err != nil {
return nil, err
}
return r, nil
}
// PurgeAllInput is used as input to the Purge function.
type PurgeAllInput struct {
// Service is the ID of the service (required).
Service string
// Soft performs a soft purge.
Soft bool
}
// PurgeAll instantly purges everything from a service.
func (c *Client) PurgeAll(i *PurgeAllInput) (*Purge, error) {
if i.Service == "" {
return nil, ErrMissingService
}
path := fmt.Sprintf("/service/%s/purge_all", i.Service)
req, err := c.RawRequest("POST", path, nil)
if err != nil {
return nil, err
}
if i.Soft {
req.Header.Set("Fastly-Soft-Purge", "1")
}
resp, err := checkResp(c.HTTPClient.Do(req))
if err != nil {
return nil, err
}
var r *Purge
if err := decodeJSON(&r, resp.Body); err != nil {
return nil, err
}
return r, nil
}