remove boundary characters that pkg:http_parser cannot parse (#72)

diff --git a/lib/src/boundary_characters.dart b/lib/src/boundary_characters.dart
new file mode 100644
index 0000000..03b7ac2
--- /dev/null
+++ b/lib/src/boundary_characters.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// All character codes that are valid in multipart boundaries. This is the
+/// intersection of the characters allowed in the `bcharsnospace` production
+/// defined in [RFC 2046][] and those allowed in the `token` production
+/// defined in [RFC 1521][].
+///
+/// [RFC 2046]: http://tools.ietf.org/html/rfc2046#section-5.1.1.
+/// [RFC 1521]: https://tools.ietf.org/html/rfc1521#section-4
+const List<int> BOUNDARY_CHARACTERS = const <int>[
+  39, 43, 95, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+  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, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+  107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+  122
+];
diff --git a/lib/src/multipart_request.dart b/lib/src/multipart_request.dart
index 7250def..8132f80 100644
--- a/lib/src/multipart_request.dart
+++ b/lib/src/multipart_request.dart
@@ -7,6 +7,7 @@
 import 'dart:math';
 
 import 'base_request.dart';
+import 'boundary_characters.dart';
 import 'byte_stream.dart';
 import 'multipart_file.dart';
 import 'utils.dart';
@@ -117,21 +118,6 @@
     return new ByteStream(controller.stream);
   }
 
-  /// All character codes that are valid in multipart boundaries. This is the
-  /// intersection of the characters allowed in the `bcharsnospace` production
-  /// defined in [RFC 2046][] and those allowed in the `token` production
-  /// defined in [RFC 1521][].
-  ///
-  /// [RFC 2046]: http://tools.ietf.org/html/rfc2046#section-5.1.1.
-  /// [RFC 1521]: https://tools.ietf.org/html/rfc1521#section-4
-  static const List<int> _BOUNDARY_CHARACTERS = const <int>[
-    39, 43, 95, 44, 45, 46, 58, 61, 63, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-    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, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
-    107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
-    122
-  ];
-
   /// Returns the header string for a field. The return value is guaranteed to
   /// contain only ASCII characters.
   String _headerForField(String name, String value) {
@@ -172,7 +158,7 @@
     var prefix = "dart-http-boundary-";
     var list = new List<int>.generate(_BOUNDARY_LENGTH - prefix.length,
         (index) =>
-            _BOUNDARY_CHARACTERS[_random.nextInt(_BOUNDARY_CHARACTERS.length)],
+            BOUNDARY_CHARACTERS[_random.nextInt(BOUNDARY_CHARACTERS.length)],
         growable: false);
     return "$prefix${new String.fromCharCodes(list)}";
   }
diff --git a/test/io/utils.dart b/test/io/utils.dart
index 4594b6e..24276fa 100644
--- a/test/io/utils.dart
+++ b/test/io/utils.dart
@@ -85,7 +85,7 @@
           requestBody = requestBodyBytes;
         }
 
-        var content = {
+        var content = <String, dynamic>{
           'method': request.method,
           'path': request.uri.path,
           'headers': {}
diff --git a/test/multipart_test.dart b/test/multipart_test.dart
index 8f908f9..ae3c4b3 100644
--- a/test/multipart_test.dart
+++ b/test/multipart_test.dart
@@ -5,6 +5,7 @@
 import 'dart:async';
 
 import 'package:http/http.dart' as http;
+import 'package:http/src/boundary_characters.dart';
 import 'package:http_parser/http_parser.dart';
 import 'package:unittest/unittest.dart';
 
@@ -18,6 +19,13 @@
         '''));
   });
 
+  test('boundary characters', () {
+    var testBoundary = new String.fromCharCodes(BOUNDARY_CHARACTERS);
+    var contentType = new MediaType.parse('text/plain; boundary=${testBoundary}');
+    var boundary = contentType.parameters['boundary'];
+    expect(boundary, testBoundary);
+  });
+
   test('with fields and files', () {
     var request = new http.MultipartRequest('POST', dummyUrl);
     request.fields['field1'] = 'value1';