本文整理汇总了TypeScript中nova-base.validate.input方法的典型用法代码示例。如果您正苦于以下问题:TypeScript validate.input方法的具体用法?TypeScript validate.input怎么用?TypeScript validate.input使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类nova-base.validate
的用法示例。
在下文中一共展示了validate.input方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: helloWorldAdapter
export async function helloWorldAdapter(this: ActionContext, inputs: any, token: Token): Promise<HelloWorldInputs> {
validate.input(inputs.author, 'Author must be provided');
const user = await (this.dao as any).fetchUserById(token.userId);
validate.authorized(user, 'Authorization required');
return {
user : user,
author : inputs.author
};
}
示例2: parseAuthHeader
export function parseAuthHeader(header: string): AuthInputs {
validate.authorized(header, 'Authorization header was not provided');
const authParts = header.split(' ');
validate.input(authParts.length === 2, 'Invalid authorization header');
return {
scheme : authParts[0],
credentials : authParts[1]
};
}
示例3: function
handlers.push(async function(request: Request, response: Response, next: Function) {
try {
// remember current time
const timestamp = Date.now();
// build inputs object
let inputs: any;
if (config.body && config.body.type === 'files') {
inputs = Object.assign({}, config.defaults, request.query, request.params, request.body, { files: request.files });
}
else if (config.body && config.body.type === 'multipart') {
const filesField = (config.body as MultipartBodyOptions).mapFilesTo;
const files = filesField ? { [filesField]: request.files } : undefined;
inputs = Object.assign({}, config.defaults, request.query, request.params, request.body, files);
}
else {
const bodyField = config.body && (config.body as JsonBodyOptions).mapTo;
const body = bodyField ? { [bodyField]: request.body } : request.body;
inputs = Object.assign({}, config.defaults, request.query, request.params, body);
}
// get the executor
const executor = executorMap.get(inputs[selector]);
validate.input(!selector || executor, `No actions found for the specified ${selector}`);
// check authorization header
let requestor: RequestorInfo;
const authHeader = request.headers['authorization'] || request.headers['Authorization'];
if (authHeader) {
// if header is present, build and parse auth inputs
const authInputs = parseAuthHeader(authHeader);
validate(executor.authenticator, 'Cannot authenticate: authenticator is undefined');
requestor = {
ip : request.ip,
auth: executor.authenticator.decode(authInputs)
};
}
else {
// otherwise, set requestor to the IP address of the request
requestor = { ip: request.ip };
}
// execute the action
const result = await executor.execute(inputs, requestor, timestamp);
// build response
if (config.response) {
let view: any;
let viewer: string = requestor.auth
? executor.authenticator.toOwner(requestor.auth)
: requestor.ip;
if (typeof config.response === 'function') {
view = config.response(result, undefined, viewer, timestamp);
}
else {
const viewBuilderOptions = (typeof config.response.options === 'function')
? config.response.options(inputs, result, viewer, timestamp)
: config.response.options;
view = config.response.view(result, viewBuilderOptions, viewer, timestamp);
}
if (!view) throw new Exception('Resource not found', HttpStatusCode.NotFound);
if (typeof view !== 'object') throw new Exception(`View for ${request.method} ${request.path} returned invalid value`);
response.statusCode = HttpStatusCode.OK;
const body = JSON.stringify(view);
response.setHeader('Content-Type', 'application/json; charset=utf-8');
response.setHeader('Content-Length', Buffer.byteLength(body, 'utf8').toString(10));
response.end(body, 'utf8');
}
else {
response.statusCode = HttpStatusCode.NoContent;
response.end();
}
}
catch (error) {
next(error);
}
});