node-web-mvc
Version:
node spring mvc
54 lines (53 loc) • 2.14 kB
JavaScript
;
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;