Live video on the AT Protocol
79
fork

Configure Feed

Select the types of activity you want to include in your feed.

at eli/standalone-oproxy 66 lines 1.6 kB view raw
1package spxrpc 2 3import ( 4 "context" 5 "net/http" 6 7 "github.com/labstack/echo/v4" 8 "github.com/streamplace/oatproxy/pkg/oatproxy" 9 "stream.place/streamplace/pkg/config" 10 "stream.place/streamplace/pkg/log" 11 "stream.place/streamplace/pkg/model" 12) 13 14type Server struct { 15 e *echo.Echo 16 cli *config.CLI 17 model model.Model 18} 19 20func NewServer(ctx context.Context, cli *config.CLI, model model.Model, op *oatproxy.OATProxy) (*Server, error) { 21 e := echo.New() 22 s := &Server{ 23 e: e, 24 cli: cli, 25 model: model, 26 } 27 e.Use(s.ErrorHandlingMiddleware()) 28 e.Use(op.OAuthMiddleware) 29 err := s.RegisterHandlersPlaceStream(e) 30 if err != nil { 31 return nil, err 32 } 33 err = s.RegisterHandlersAppBsky(e) 34 if err != nil { 35 return nil, err 36 } 37 err = s.RegisterHandlersComAtproto(e) 38 if err != nil { 39 return nil, err 40 } 41 e.GET("/xrpc/*", s.HandleWildcard) 42 e.POST("/xrpc/*", s.HandleWildcard) 43 return s, nil 44} 45 46func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { 47 s.e.ServeHTTP(w, r) 48} 49 50func (s *Server) ErrorHandlingMiddleware() echo.MiddlewareFunc { 51 return func(next echo.HandlerFunc) echo.HandlerFunc { 52 return func(c echo.Context) error { 53 err := next(c) 54 if err == nil { 55 return nil 56 } 57 httpError, ok := err.(*echo.HTTPError) 58 if ok { 59 log.Error(c.Request().Context(), "http error", "code", httpError.Code, "message", httpError.Message, "internal", httpError.Internal) 60 return err 61 } 62 log.Error(c.Request().Context(), "unhandled error", "error", err) 63 return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) 64 } 65 } 66}