mcp-quiz-server
Version:
🧠AI-Powered Quiz Management via Model Context Protocol (MCP) - Create, manage, and take quizzes directly from VS Code, Claude, and other AI agents.
58 lines (57 loc) • 1.74 kB
JavaScript
;
/**
* @fileoverview Quiz Embed Routes - Embeddable quiz functionality
* @version 1.0.0
* @since 2025-08-04
* @module QuizEmbedRoutes
* @description Handles embeddable quiz URLs for iframe integration
* @contributors GitHub Copilot
* @requirements REQ_ROUTES_001
* @lineCount < 200
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createQuizEmbedRoutes = createQuizEmbedRoutes;
const express_1 = __importDefault(require("express"));
const error_handler_1 = require("../../../../shared/error-handler");
function createQuizEmbedRoutes(config) {
const router = express_1.default.Router();
/**
* Embedded Quiz Route
* GET /embed/:id
*
* Provides iframe-embeddable quiz interface
*/
router.get('/:id', (0, error_handler_1.asyncHandler)(async (req, res) => {
const quizId = req.params.id;
const htmlContent = await generateEmbeddedQuizHTML(quizId, req.query);
res.send(htmlContent);
}));
return router;
}
async function generateEmbeddedQuizHTML(quizId, query) {
return `
<!DOCTYPE html>
<html>
<head>
<title>Quiz Embed</title>
<link href="/output.css" rel="stylesheet">
<style>
body { margin: 0; padding: 1rem; }
.quiz-embed { max-width: 100%; }
</style>
</head>
<body>
<div class="quiz-embed">
<div id="quiz-container"></div>
</div>
<script src="/dist/quiz-embed.js"></script>
<script>
window.embedQuiz('${quizId}', ${JSON.stringify(query)});
</script>
</body>
</html>
`;
}