1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
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
}
|