MCPcopy Index your code
hub / github.com/bytebase/bytebase / Router

Method Router

backend/api/lsp/lsp.go:34–65  ·  view source on GitHub ↗
(c *echo.Context)

Source from the content-addressed store, hash-verified

32)
33
34func (s *Server) Router(c *echo.Context) error {
35 // Authenticate user before upgrading WebSocket connection
36 accessTokenStr, err := auth.GetTokenFromHeaders(c.Request().Header)
37 if err != nil {
38 return echo.NewHTTPError(http.StatusUnauthorized, "missing access token")
39 }
40
41 // Authenticate user using server's auth interceptor
42 user, workspaceID, tokenExpiry, err := s.authInterceptor.AuthenticateToken(c.Request().Context(), accessTokenStr)
43 if err != nil {
44 return echo.NewHTTPError(http.StatusUnauthorized, err.Error())
45 }
46
47 connection, err := upgrader.Upgrade(c.Response(), c.Request(), nil)
48 if err != nil {
49 slog.Error("Failed to upgrade websocket connection", log.BBError(errors.Errorf("errors: %v\n%s", err, stacktrace.TakeStacktrace(20 /* n */, 5 /* skip */))))
50 return errors.Wrap(err, "could not upgrade to WebSocket")
51 }
52 defer connection.Close()
53 connectionID := s.connectionCount.Add(1)
54
55 handler, closer := newHandler(s.store, s.profile, s.iamManager, user, workspaceID, tokenExpiry)
56 ctx := c.Request().Context()
57 ctx = context.WithValue(ctx, common.UserContextKey, user)
58 ctx = context.WithValue(ctx, common.WorkspaceIDContextKey, workspaceID)
59 <-jsonrpc2.NewConn(ctx, wsjsonrpc2.NewObjectStream(connection), handler, nil /* connOpt */).DisconnectNotify()
60 err = closer.Close()
61 if err != nil {
62 return errors.Wrapf(err, "failed to close LSP connection: %v", connectionID)
63 }
64 return nil
65}

Callers

nothing calls this directly

Calls 7

GetTokenFromHeadersFunction · 0.92
BBErrorFunction · 0.92
TakeStacktraceFunction · 0.92
AuthenticateTokenMethod · 0.80
ErrorfMethod · 0.80
CloseMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected