Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
226cb0193b
|
|||
|
aca4c8aa4d
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@extollo/lib",
|
"name": "@extollo/lib",
|
||||||
"version": "0.1.4",
|
"version": "0.1.5",
|
||||||
"description": "The framework library that lifts up your code.",
|
"description": "The framework library that lifts up your code.",
|
||||||
"main": "lib/index.js",
|
"main": "lib/index.js",
|
||||||
"types": "lib/index.d.ts",
|
"types": "lib/index.d.ts",
|
||||||
|
|||||||
@@ -30,8 +30,51 @@ export class ParseIncomingBodyHTTPModule extends HTTPKernelModule {
|
|||||||
protected readonly logging!: Logging
|
protected readonly logging!: Logging
|
||||||
|
|
||||||
public async apply(request: Request): Promise<Request> {
|
public async apply(request: Request): Promise<Request> {
|
||||||
if ( !request.getHeader('content-type') ) return request
|
const contentType = request.getHeader('content-type')
|
||||||
|
const contentTypes = (Array.isArray(contentType) ? contentType : [contentType])
|
||||||
|
.filter(Boolean).map(x => x!.toLowerCase())
|
||||||
|
if ( !contentType ) return request
|
||||||
|
|
||||||
|
if (
|
||||||
|
contentTypes.includes('multipart/form-data')
|
||||||
|
|| contentTypes.includes('application/x-www-form-urlencoded')
|
||||||
|
) {
|
||||||
|
return this.applyBusboy(request)
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( contentTypes.includes('application/json') ) {
|
||||||
|
return this.applyJSON(request)
|
||||||
|
}
|
||||||
|
|
||||||
|
return request
|
||||||
|
}
|
||||||
|
|
||||||
|
public async applyJSON(request: Request): Promise<Request> {
|
||||||
|
await new Promise<void>((res, rej) => {
|
||||||
|
let data = ''
|
||||||
|
|
||||||
|
request.toNative().on('data', chunk => {
|
||||||
|
data += chunk
|
||||||
|
})
|
||||||
|
|
||||||
|
request.toNative().on('end', () => {
|
||||||
|
try {
|
||||||
|
const body = JSON.parse(data)
|
||||||
|
for ( const key in body ) {
|
||||||
|
if ( !body.hasOwnProperty(key) ) continue
|
||||||
|
request.parsedInput[key] = body[key]
|
||||||
|
}
|
||||||
|
res()
|
||||||
|
} catch (e) {
|
||||||
|
rej(e)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return request
|
||||||
|
}
|
||||||
|
|
||||||
|
public async applyBusboy(request: Request): Promise<Request> {
|
||||||
const config = this.config.get('server.uploads', {})
|
const config = this.config.get('server.uploads', {})
|
||||||
|
|
||||||
await new Promise<void>((res, rej) => {
|
await new Promise<void>((res, rej) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user