ParseEvent parses the raw event data into the provided event. It fails if there is any unknown fields or extra data at the end of the JSON. The returned event is validated.
(data json.RawMessage, out Event)
| 55 | // there is any unknown fields or extra data at the end of the JSON. The |
| 56 | // returned event is validated. |
| 57 | func ParseEvent(data json.RawMessage, out Event) error { |
| 58 | dec := json.NewDecoder(bytes.NewReader(data)) |
| 59 | dec.DisallowUnknownFields() |
| 60 | |
| 61 | err := dec.Decode(out) |
| 62 | if err != nil { |
| 63 | return xerrors.Errorf("unmarshal %T event: %w", out, err) |
| 64 | } |
| 65 | if dec.More() { |
| 66 | return xerrors.Errorf("extra data after %T event", out) |
| 67 | } |
| 68 | err = out.Valid() |
| 69 | if err != nil { |
| 70 | return xerrors.Errorf("invalid %T event: %w", out, err) |
| 71 | } |
| 72 | |
| 73 | return nil |
| 74 | } |
| 75 | |
| 76 | // UnknownEventTypeError is returned by ParseEventWithType when an unknown event |
| 77 | // type is encountered. |