50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
|
package fastly
|
||
|
|
||
|
import "net/http"
|
||
|
|
||
|
// EdgeCheck represents an edge check response from the Fastly API.
|
||
|
type EdgeCheck struct {
|
||
|
Hash string `mapstructure:"hash"`
|
||
|
Server string `mapstructure:"server"`
|
||
|
ResponseTime float64 `mapstructure:"response_time"`
|
||
|
Request *EdgeCheckRequest `mapstructure:"request"`
|
||
|
Response *EdgeCheckResponse `mapstructure:"response"`
|
||
|
}
|
||
|
|
||
|
// EdgeCheckRequest is the request part of an EdgeCheck response.
|
||
|
type EdgeCheckRequest struct {
|
||
|
URL string `mapstructure:"url"`
|
||
|
Method string `mapstructure:"method"`
|
||
|
Headers *http.Header `mapstructure:"headers"`
|
||
|
}
|
||
|
|
||
|
// EdgeCheckResponse is the response part of an EdgeCheck response.
|
||
|
type EdgeCheckResponse struct {
|
||
|
Status uint `mapstructure:"status"`
|
||
|
Headers *http.Header `mapstructure:"headers"`
|
||
|
}
|
||
|
|
||
|
// EdgeCheckInput is used as input to the EdgeCheck function.
|
||
|
type EdgeCheckInput struct {
|
||
|
URL string `form:"url,omitempty"`
|
||
|
}
|
||
|
|
||
|
// EdgeCheck queries the edge cache for all of Fastly's servers for the given
|
||
|
// URL.
|
||
|
func (c *Client) EdgeCheck(i *EdgeCheckInput) ([]*EdgeCheck, error) {
|
||
|
resp, err := c.Get("/content/edge_check", &RequestOptions{
|
||
|
Params: map[string]string{
|
||
|
"url": i.URL,
|
||
|
},
|
||
|
})
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
var e []*EdgeCheck
|
||
|
if err := decodeJSON(&e, resp.Body); err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return e, nil
|
||
|
}
|