(request MCPAuthRequest)
| 940 | } |
| 941 | |
| 942 | func (s *Session) handleMCPAuthRequest(request MCPAuthRequest) { |
| 943 | handler := s.getMCPAuthHandler() |
| 944 | if handler == nil { |
| 945 | return |
| 946 | } |
| 947 | |
| 948 | ctx := context.Background() |
| 949 | cancel := &rpc.MCPOauthPendingRequestResponseCancelled{} |
| 950 | result, err := handler(request, MCPAuthInvocation{SessionID: s.SessionID}) |
| 951 | if err != nil { |
| 952 | log.Printf( |
| 953 | "MCP OAuth handler failed. SessionId=%s, RequestId=%s, Error=%v", |
| 954 | s.SessionID, |
| 955 | request.RequestID, |
| 956 | err, |
| 957 | ) |
| 958 | } |
| 959 | if err != nil || result == nil || result.Kind == MCPAuthResultKindCancelled || result.Token == nil { |
| 960 | s.RPC.MCP.Oauth().HandlePendingRequest(ctx, &rpc.MCPOauthHandlePendingRequest{ |
| 961 | RequestID: request.RequestID, |
| 962 | Result: cancel, |
| 963 | }) |
| 964 | return |
| 965 | } |
| 966 | |
| 967 | s.RPC.MCP.Oauth().HandlePendingRequest(ctx, &rpc.MCPOauthHandlePendingRequest{ |
| 968 | RequestID: request.RequestID, |
| 969 | Result: &rpc.MCPOauthPendingRequestResponseToken{ |
| 970 | AccessToken: result.Token.AccessToken, |
| 971 | TokenType: result.Token.TokenType, |
| 972 | ExpiresIn: result.Token.ExpiresIn, |
| 973 | }, |
| 974 | }) |
| 975 | } |
| 976 | |
| 977 | // handleElicitationRequest dispatches an elicitation.requested event to the registered handler |
| 978 | // and sends the result back via the RPC layer. Auto-cancels on error. |
no test coverage detected