Versions in this module Expand all Collapse all v0 v0.0.1 Sep 27, 2024 Changes in this version + var ErrQueueEmpty = fmt.Errorf("queue is empty") + var ErrQueueNoNext = fmt.Errorf("no more videos in queue") + func ClientIP(r *http.Request) string + func LoggerMiddleware(logger *log.Logger) func(http.Handler) http.Handler + func RenderHTML(w http.ResponseWriter, status int, s string) error + func RenderJSON[T any](w http.ResponseWriter, status int, obj T) error + type Details struct + AuthorName string + StartSeconds int + ThumbnailURL string + Title string + VideoId string + func NewDetails(vid string, start int) (Details, error) + type HTTPServer struct + Addr string + Handler http.Handler + Logger *log.Logger + Mux *http.ServeMux + Queue *Queue + TLSCertFile string + TLSKeyFile string + func NewHTTPServer(logger *log.Logger, addr string, port int, certFile string, keyFile string, ...) HTTPServer + func (s *HTTPServer) AddHandler() http.Handler + func (s *HTTPServer) AddRoutes() + func (s *HTTPServer) ClearHandler() http.Handler + func (s *HTTPServer) NextHandler(peek bool) http.Handler + func (s *HTTPServer) PlayNextHandler() http.Handler + func (s *HTTPServer) QueueHandler() http.Handler + func (s *HTTPServer) RemoveHandler() http.Handler + func (s *HTTPServer) Start(ctx context.Context, timeoutSec int) error + type Queue struct + Videos []Details + func NewQueue() Queue + func (q *Queue) Add(vid string, start int) error + func (q *Queue) Clear() + func (q *Queue) GetNext() (Details, error) + func (q *Queue) PlayNext(vid string, start int) error + func (q *Queue) Remove(vid string) error + func (q Queue) PeekNext() (Details, error) + type ReqMetrics struct + ClientIP string + Duration time.Duration + Method string + Referer string + RequestTime time.Time + ResponseCode int + ResponseSize int64 + URI string + UserAgent string + func NewReqMetrics(r *http.Request) ReqMetrics