42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/pocketbase/pocketbase/core"
|
|
)
|
|
|
|
func registerAPI(se *core.ServeEvent) {
|
|
group := se.Router.Group("/api/cctv")
|
|
|
|
group.GET("/thumb/{streamId}", func(e *core.RequestEvent) error {
|
|
streamId := e.Request.PathValue("streamId")
|
|
if streamId == "" {
|
|
return e.BadRequestError("Missing stream ID", nil)
|
|
}
|
|
img, err := ingestService.GetThumbnail(e.Request.Context(), streamId)
|
|
if err != nil {
|
|
return e.InternalServerError("Failed to get thumbnail", err)
|
|
}
|
|
if img == nil {
|
|
return e.NotFoundError("Thumbnail not found", nil)
|
|
}
|
|
e.Response.Header().Set("Content-Type", "image/jpeg")
|
|
e.Response.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
|
|
_, err = io.Copy(e.Response, img)
|
|
if err != nil {
|
|
return e.InternalServerError("Failed to write thumbnail", err)
|
|
}
|
|
return nil
|
|
})
|
|
|
|
group.GET("/live/{streamId}", func(e *core.RequestEvent) error {
|
|
streamId := e.Request.PathValue("streamId")
|
|
if streamId == "" {
|
|
return e.BadRequestError("Missing stream ID", nil)
|
|
}
|
|
ingestService.SubscribeLive(e.Request.Context(), streamId)
|
|
return nil
|
|
})
|
|
}
|