OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of http_server; | 5 library http_server.http_multipart_form_data_impl; |
6 | 6 |
| 7 import 'dart:async'; |
| 8 import 'dart:convert'; |
| 9 import 'dart:io'; |
7 | 10 |
8 class _HttpMultipartFormData extends Stream implements HttpMultipartFormData { | 11 import 'package:mime/mime.dart'; |
| 12 |
| 13 import 'http_multipart_form_data.dart'; |
| 14 |
| 15 class HttpMultipartFormDataImpl extends Stream |
| 16 implements HttpMultipartFormData { |
9 final ContentType contentType; | 17 final ContentType contentType; |
10 final HeaderValue contentDisposition; | 18 final HeaderValue contentDisposition; |
11 final HeaderValue contentTransferEncoding; | 19 final HeaderValue contentTransferEncoding; |
12 | 20 |
13 final MimeMultipart _mimeMultipart; | 21 final MimeMultipart _mimeMultipart; |
14 | 22 |
15 bool _isText = false; | 23 bool _isText = false; |
16 | 24 |
17 Stream _stream; | 25 Stream _stream; |
18 | 26 |
19 _HttpMultipartFormData(ContentType this.contentType, | 27 HttpMultipartFormDataImpl(ContentType this.contentType, |
20 HeaderValue this.contentDisposition, | 28 HeaderValue this.contentDisposition, |
21 HeaderValue this.contentTransferEncoding, | 29 HeaderValue this.contentTransferEncoding, |
22 MimeMultipart this._mimeMultipart, | 30 MimeMultipart this._mimeMultipart, |
23 Encoding defaultEncoding) { | 31 Encoding defaultEncoding) { |
24 _stream = _mimeMultipart; | 32 _stream = _mimeMultipart; |
25 if (contentTransferEncoding != null) { | 33 if (contentTransferEncoding != null) { |
26 // TODO(ajohnsen): Support BASE64, etc. | 34 // TODO(ajohnsen): Support BASE64, etc. |
27 throw new HttpException("Unsupported contentTransferEncoding: " | 35 throw new HttpException("Unsupported contentTransferEncoding: " |
28 "${contentTransferEncoding.value}"); | 36 "${contentTransferEncoding.value}"); |
29 } | 37 } |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 | 75 |
68 default: | 76 default: |
69 remaining[key] = multipart.headers[key]; | 77 remaining[key] = multipart.headers[key]; |
70 break; | 78 break; |
71 } | 79 } |
72 } | 80 } |
73 if (disposition == null) { | 81 if (disposition == null) { |
74 throw new HttpException( | 82 throw new HttpException( |
75 "Mime Multipart doesn't contain a Content-Disposition header value"); | 83 "Mime Multipart doesn't contain a Content-Disposition header value"); |
76 } | 84 } |
77 return new _HttpMultipartFormData( | 85 return new HttpMultipartFormDataImpl( |
78 type, disposition, encoding, multipart, defaultEncoding); | 86 type, disposition, encoding, multipart, defaultEncoding); |
79 } | 87 } |
80 | 88 |
81 StreamSubscription listen(void onData(data), | 89 StreamSubscription listen(void onData(data), |
82 {void onDone(), | 90 {void onDone(), |
83 Function onError, | 91 Function onError, |
84 bool cancelOnError}) { | 92 bool cancelOnError}) { |
85 return _stream.listen(onData, | 93 return _stream.listen(onData, |
86 onDone: onDone, | 94 onDone: onDone, |
87 onError: onError, | 95 onError: onError, |
88 cancelOnError: cancelOnError); | 96 cancelOnError: cancelOnError); |
89 } | 97 } |
90 | 98 |
91 String value(String name) { | 99 String value(String name) { |
92 return _mimeMultipart.headers[name]; | 100 return _mimeMultipart.headers[name]; |
93 } | 101 } |
94 } | 102 } |
OLD | NEW |