Files
elmprodvpn/selective-vpn-api/app/events_handlers.go

33 lines
728 B
Go

package app
import (
"net/http"
eventstreampkg "selective-vpn-api/app/eventstream"
"time"
)
func parseSinceID(r *http.Request) int64 {
return eventstreampkg.ParseSinceID(r)
}
func handleEventsStream(w http.ResponseWriter, r *http.Request) {
heartbeat := time.Duration(envInt("SVPN_EVENTS_HEARTBEAT_SEC", defaultHeartbeatSeconds)) * time.Second
eventstreampkg.Serve(
w,
r,
500*time.Millisecond,
heartbeat,
func(since int64) []eventstreampkg.Event {
raw := events.since(since)
if len(raw) == 0 {
return nil
}
out := make([]eventstreampkg.Event, 0, len(raw))
for _, ev := range raw {
out = append(out, eventstreampkg.Event{ID: ev.ID, Kind: ev.Kind, Data: ev})
}
return out
},
)
}