| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package cat
- import (
- "encoding/json"
- "errors"
- "fmt"
- )
- // SyntheticsHeader represents a decoded Synthetics header.
- type SyntheticsHeader struct {
- Version int
- AccountID int
- ResourceID string
- JobID string
- MonitorID string
- }
- var (
- errInvalidSyntheticsJSON = errors.New("invalid synthetics JSON")
- errInvalidSyntheticsVersion = errors.New("version is not a float64")
- errInvalidSyntheticsAccountID = errors.New("account ID is not a float64")
- errInvalidSyntheticsResourceID = errors.New("synthetics resource ID is not a string")
- errInvalidSyntheticsJobID = errors.New("synthetics job ID is not a string")
- errInvalidSyntheticsMonitorID = errors.New("synthetics monitor ID is not a string")
- )
- type errUnexpectedSyntheticsVersion int
- func (e errUnexpectedSyntheticsVersion) Error() string {
- return fmt.Sprintf("unexpected synthetics header version: %d", e)
- }
- // UnmarshalJSON unmarshalls a SyntheticsHeader from raw JSON.
- func (s *SyntheticsHeader) UnmarshalJSON(data []byte) error {
- var ok bool
- var v interface{}
- if err := json.Unmarshal(data, &v); err != nil {
- return err
- }
- arr, ok := v.([]interface{})
- if !ok {
- return errInvalidSyntheticsJSON
- }
- if len(arr) != 5 {
- return errUnexpectedArraySize{
- label: "unexpected number of application data elements",
- expected: 5,
- actual: len(arr),
- }
- }
- version, ok := arr[0].(float64)
- if !ok {
- return errInvalidSyntheticsVersion
- }
- s.Version = int(version)
- if s.Version != 1 {
- return errUnexpectedSyntheticsVersion(s.Version)
- }
- accountID, ok := arr[1].(float64)
- if !ok {
- return errInvalidSyntheticsAccountID
- }
- s.AccountID = int(accountID)
- if s.ResourceID, ok = arr[2].(string); !ok {
- return errInvalidSyntheticsResourceID
- }
- if s.JobID, ok = arr[3].(string); !ok {
- return errInvalidSyntheticsJobID
- }
- if s.MonitorID, ok = arr[4].(string); !ok {
- return errInvalidSyntheticsMonitorID
- }
- return nil
- }
|