Files

55 lines
1.3 KiB
Go

package ari
import "encoding/json"
func ParseEvent(data []byte) (Event, error) {
var base BaseEvent
if err := json.Unmarshal(data, &base); err != nil {
return nil, err
}
switch base.Type {
case EventStasisStart:
var event StasisStartEvent
if err := json.Unmarshal(data, &event); err != nil {
return nil, err
}
return event, nil
case EventStasisEnd:
var event StasisEndEvent
if err := json.Unmarshal(data, &event); err != nil {
return nil, err
}
return event, nil
case EventChannelStateChange:
var event ChannelStateChangeEvent
if err := json.Unmarshal(data, &event); err != nil {
return nil, err
}
return event, nil
case EventChannelHangupRequest:
var event ChannelHangupRequestEvent
if err := json.Unmarshal(data, &event); err != nil {
return nil, err
}
return event, nil
case EventChannelDestroyed:
var event ChannelDestroyedEvent
if err := json.Unmarshal(data, &event); err != nil {
return nil, err
}
return event, nil
case EventApplicationReplaced:
var event ApplicationReplacedEvent
if err := json.Unmarshal(data, &event); err != nil {
return nil, err
}
return event, nil
default:
var raw map[string]any
if err := json.Unmarshal(data, &raw); err != nil {
return nil, err
}
return GenericEvent{BaseEvent: base, Raw: raw}, nil
}
}