當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript validate.input方法代碼示例

本文整理匯總了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
    };
}
開發者ID:herculesinc,項目名稱:nova-server,代碼行數:9,代碼來源:adapters.ts

示例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]
    };
}
開發者ID:herculesinc,項目名稱:nova-server,代碼行數:9,代碼來源:util.ts

示例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);
            }
        });
開發者ID:herculesinc,項目名稱:nova-server,代碼行數:80,代碼來源:RouteController.ts


注:本文中的nova-base.validate.input方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。