UNPKG

node-web-mvc

Version:
41 lines (40 loc) 1.68 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const openapi_1 = __importDefault(require("../openapi")); const ByteArrayResource_1 = __importDefault(require("../../servlets/resources/ByteArrayResource")); const MediaType_1 = __importDefault(require("../../servlets/http/MediaType")); class OpenApiResolver { /** * 初始化swagger文档配置 */ static initializeResource(registry, enable) { if (!enable) return; // 如果使用swagger const swaggerLocation = path_1.default.join(__dirname, '../../../swagger-ui/'); registry .addResourceHandler('/swagger-ui/openapi.json') .resourceChain(false) .addResolver(new OpenApiResolver()); registry .addResourceHandler('/swagger-ui/**') .addResourceLocations(swaggerLocation) .setCacheControl({ maxAge: 0 }); } async resolveResource(request, requestPath, locations, next) { const builder = new openapi_1.default(); const meta = builder.build(request.contextPath); const mediaType = MediaType_1.default.APPLICATION_JSON; const buffer = Buffer.from(JSON.stringify(meta, null, 2)); const resource = new ByteArrayResource_1.default(buffer, mediaType); return resource; } resolveUrlPath(resourcePath, locations, chain) { return chain.resolveUrlPath(resourcePath, locations); } } exports.default = OpenApiResolver;