diff --git a/pkg/pubsub/events.go b/pkg/pubsub/events.go index a9694d48..05689a53 100644 --- a/pkg/pubsub/events.go +++ b/pkg/pubsub/events.go @@ -1,5 +1,9 @@ package pubsub +import ( + "fmt" +) + type EventType int const ( @@ -19,6 +23,11 @@ const ( Private RoomVisibility = "private" ) +const ( + roomIDKey = "roomID" + userIDKey = "userID" +) + type Event struct { Type EventType `json:"type"` Params map[string]interface{} `json:"params"` @@ -72,3 +81,21 @@ func NewRoomLeftEvent(room, user int) Event { Params: map[string]interface{}{"id": room, "creator": user}, } } + +func (e Event) GetUserID() (int, error) { + id, ok := e.Params[userIDKey].(float64) + if !ok { + return 0, fmt.Errorf("invalid field \"%s\"", userIDKey) + } + + return int(id), nil +} + +func (e Event) GetRoomID() (int, error) { + id, ok := e.Params[roomIDKey].(float64) + if !ok { + return 0, fmt.Errorf("invalid field \"%s\"", roomIDKey) + } + + return int(id), nil +}