mock-service-plugin
Version:
42 lines (38 loc) • 1.66 kB
JavaScript
;
var jsonHandler = require('./json-handler.js');
var sseHandler = require('./sse-handler.js');
var textHandler = require('./text-handler.js');
var xmlHandler = require('./xml-handler.js');
var csvHandler = require('./csv-handler.js');
var imageHandler = require('./image-handler.js');
var constant = require('../constant.js');
const CONTENT_TYPE_HANDLERS = {
"application/json": jsonHandler.JsonResponseHandler,
"text/event-stream": sseHandler.SseResponseHandler,
"text/plain": textHandler.TextResponseHandler,
"text/html": textHandler.TextResponseHandler,
"text/markdown": textHandler.TextResponseHandler,
"text/css": textHandler.TextResponseHandler,
"application/javascript": textHandler.TextResponseHandler,
"application/xml": xmlHandler.XmlResponseHandler,
"text/csv": csvHandler.CsvResponseHandler,
"image/png": imageHandler.ImageResponseHandler,
"image/jpeg": imageHandler.ImageResponseHandler,
"image/gif": imageHandler.ImageResponseHandler,
"image/svg+xml": imageHandler.ImageResponseHandler,
// 可以在这里添加更多处理器
};
class ResponseHandlerFactory {
static getHandler(contentType) {
const HandlerClass = CONTENT_TYPE_HANDLERS[contentType];
if (!HandlerClass) {
throw new Error(`No handler found for content type: ${contentType}`);
}
return new HandlerClass();
}
static getContentTypeByExtension(extension) {
return constant.CONTENT_TYPES[extension.toLowerCase()] || "application/json";
}
}
exports.ResponseHandlerFactory = ResponseHandlerFactory;
//# sourceMappingURL=handler-factory.js.map