Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | 1x 1x 41x 6x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 2x 2x 1x 2x 1x 1x 1x 1x 1x 41x 1x 1x 1x 2x | // Copyright (C) 2017 Norman Breau // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. import * as express from 'express'; import { IncomingHttpHeaders } from 'http'; import {Writable} from 'stream'; import * as formidable from 'formidable'; import {IFormData} from './IFormData'; export interface IParameterMap { [key: string]: string; } export class Request<TBody = any> { private request: express.Request; public constructor(request: express.Request) { this.request = request; } public getBody(): TBody { return this.request.body; } public getForm(): Promise<IFormData> { return new Promise<IFormData>((resolve, reject) => { let r: express.Request = this.getRequestSource(); let form: formidable.IncomingForm = new formidable.IncomingForm(); form.hash = 'md5'; form.parse(r, (error: any, fields: formidable.Fields, files: formidable.Files): any => { Iif (error) { return reject(error); } return resolve({ fields, files: files }); }); }); } public getHeaders(): IncomingHttpHeaders { return this.request.headers; } public getHeader(name: string): string { let value: string | Array<string> = this.request.headers[name.toLowerCase()]; if (typeof value === 'string') { return value; } else { return value && value[0] ? value[0] : null; } } public getQueryVariables(): any { return this.request.query; } public getParams(): IParameterMap { return this.request.params; } public getParam(name: string): string { return this.request.params[name]; } public getIP(): string { return this.request.ip; } public getForwardedIP(): string { return this.getHeader('X-Forwarded-FOR'); } public getHostname(): string { return this.request.hostname; } public getMethod(): string { return this.request.method; } public getURL(): string { return this.request.originalUrl; } public isSecure(): boolean { return this.request.secure; } public pipe(destination: Writable): any { return this.request.pipe(destination); } public unpipe(source: Writable): void { this.request.unpipe(source); } public getRequestSource(): express.Request { return this.request; } } |