Resolved all issues
This commit is contained in:
parent
10e2516301
commit
374b80c44d
5 changed files with 42 additions and 34 deletions
1
.travis.yml
Normal file
1
.travis.yml
Normal file
|
@ -0,0 +1 @@
|
||||||
|
language: dart
|
|
@ -1,5 +1,6 @@
|
||||||
# Body Parser
|
# Body Parser
|
||||||

|

|
||||||
|

|
||||||
|
|
||||||
**NOT YET PRODUCTION READY**
|
**NOT YET PRODUCTION READY**
|
||||||
|
|
||||||
|
|
|
@ -17,42 +17,48 @@ import 'map_from_uri.dart';
|
||||||
Future<BodyParseResult> parseBody(HttpRequest request) async {
|
Future<BodyParseResult> parseBody(HttpRequest request) async {
|
||||||
var result = new BodyParseResult();
|
var result = new BodyParseResult();
|
||||||
|
|
||||||
if (request.headers.contentType != null) {
|
try {
|
||||||
if (request.headers.contentType.primaryType == 'multipart' &&
|
if (request.headers.contentType != null) {
|
||||||
request.headers.contentType.parameters.containsKey('boundary')) {
|
if (request.headers.contentType.primaryType == 'multipart' &&
|
||||||
var parts = request
|
request.headers.contentType.parameters.containsKey('boundary')) {
|
||||||
.transform(new MimeMultipartTransformer(
|
var parts = request
|
||||||
request.headers.contentType.parameters['boundary']))
|
.transform(new MimeMultipartTransformer(
|
||||||
.map((part) =>
|
request.headers.contentType.parameters['boundary']))
|
||||||
HttpMultipartFormData.parse(part, defaultEncoding: UTF8));
|
.map((part) =>
|
||||||
|
HttpMultipartFormData.parse(part, defaultEncoding: UTF8));
|
||||||
|
|
||||||
await for (HttpMultipartFormData part in parts) {
|
await for (HttpMultipartFormData part in parts) {
|
||||||
if (part.isBinary || part.contentDisposition.parameters.containsKey("filename")) {
|
if (part.isBinary ||
|
||||||
BytesBuilder builder = await part.fold(new BytesBuilder(), (BytesBuilder b, d) => b..add(d is! String ? d : d.codeUnits));
|
part.contentDisposition.parameters.containsKey("filename")) {
|
||||||
var upload = new FileUploadInfo(
|
BytesBuilder builder = await part.fold(new BytesBuilder(),
|
||||||
mimeType: part.contentType.mimeType,
|
(BytesBuilder b, d) => b..add(d is! String ? d : d.codeUnits));
|
||||||
name: part.contentDisposition.parameters['name'],
|
var upload = new FileUploadInfo(
|
||||||
filename: part.contentDisposition.parameters['filename'] ?? 'file',
|
mimeType: part.contentType.mimeType,
|
||||||
data: builder.takeBytes());
|
name: part.contentDisposition.parameters['name'],
|
||||||
result.files.add(upload);
|
filename:
|
||||||
} else if (part.isText) {
|
part.contentDisposition.parameters['filename'] ?? 'file',
|
||||||
var text = await part.join();
|
data: builder.takeBytes());
|
||||||
buildMapFromUri(result.body, '${part.contentDisposition.parameters["name"]}=$text');
|
result.files.add(upload);
|
||||||
} else {
|
} else if (part.isText) {
|
||||||
print("Found something else : ${part.contentDisposition}");
|
var text = await part.join();
|
||||||
|
buildMapFromUri(result.body,
|
||||||
|
'${part.contentDisposition.parameters["name"]}=$text');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else if (request.headers.contentType.mimeType ==
|
||||||
|
ContentType.JSON.mimeType) {
|
||||||
|
result.body
|
||||||
|
.addAll(JSON.decode(await request.transform(UTF8.decoder).join()));
|
||||||
|
} else if (request.headers.contentType.mimeType ==
|
||||||
|
'application/x-www-form-urlencoded') {
|
||||||
|
String body = await request.transform(UTF8.decoder).join();
|
||||||
|
buildMapFromUri(result.body, body);
|
||||||
}
|
}
|
||||||
} else if (request.headers.contentType.mimeType ==
|
} else if (request.uri.hasQuery) {
|
||||||
ContentType.JSON.mimeType) {
|
buildMapFromUri(result.query, request.uri.query);
|
||||||
result.body
|
|
||||||
.addAll(JSON.decode(await request.transform(UTF8.decoder).join()));
|
|
||||||
} else if (request.headers.contentType.mimeType ==
|
|
||||||
'application/x-www-form-urlencoded') {
|
|
||||||
String body = await request.transform(UTF8.decoder).join();
|
|
||||||
buildMapFromUri(result.body, body);
|
|
||||||
}
|
}
|
||||||
} else if (request.uri.hasQuery) {
|
} catch (e) {
|
||||||
buildMapFromUri(result.query, request.uri.query);
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name: body_parser
|
name: body_parser
|
||||||
author: Tobe O <thosakwe@gmail.com>
|
author: Tobe O <thosakwe@gmail.com>
|
||||||
version: 1.0.0-dev+1
|
version: 1.0.0-dev+2
|
||||||
description: Parse request bodies and query strings in Dart.
|
description: Parse request bodies and query strings in Dart.
|
||||||
homepage: https://github.com/thosakwe/body_parser
|
homepage: https://github.com/thosakwe/body_parser
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
Loading…
Reference in a new issue