UNPKG

node-web-mvc

Version:
54 lines (53 loc) 2.14 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const RequestParam_1 = __importDefault(require("../../annotations/params/RequestParam")); const MultipartFile_1 = __importDefault(require("../../http/MultipartFile")); const ApiUtils_1 = require("../../util/ApiUtils"); class RequestParamMapMethodArgumentResolver { constructor(useDefaultResolution) { this.useDefaultResolution = !!useDefaultResolution; } supportsParameter(paramater, servletContext) { if (paramater.hasParameterAnnotation(RequestParam_1.default)) { return true; } else if (paramater.isParamAssignableOf(MultipartFile_1.default)) { return true; } else { return this.useDefaultResolution; } } async resolveMultipartFile(name, servletContext) { const body = await servletContext.request.bodyReader.read(servletContext); const value = body[name]; if ((0, ApiUtils_1.isMultipartFiles)(value)) { return value; } return null; } async resolveArgument(parameter, servletContext) { const anno = parameter.getParameterAnnotation(RequestParam_1.default); const { request } = servletContext; const name = (anno === null || anno === void 0 ? void 0 : anno.value) || parameter.paramName; const query = request.query; if (parameter.isMultipartAccept()) { return this.resolveMultipartFile(name, servletContext); } else if (parameter.isParamAssignableOf(Map)) { return Object.assign({}, query); } else if (parameter.isParamAssignableOf(Array) || parameter.isParamAssignableOf(Set)) { const v = query[name]; if ((0, ApiUtils_1.isEmpty)(v)) { return null; } return v instanceof Array ? v : [v]; } return query[name]; } } exports.default = RequestParamMapMethodArgumentResolver;