UNPKG

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
"use strict"; /** * @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> `; }