mirror of
https://github.com/foss42/apidash.git
synced 2025-12-02 02:39:19 +08:00
streamHttpRequest: replaced string buffering with chunk_expansion
This commit is contained in:
@@ -51,59 +51,3 @@ Future<http.Response> convertStreamedResponse(
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
// Stream<String?> streamTextResponse(
|
||||
// http.StreamedResponse streamedResponse,
|
||||
// ) async* {
|
||||
// try {
|
||||
// if (streamedResponse.statusCode != 200) {
|
||||
// final errorText = await streamedResponse.stream.bytesToString();
|
||||
// throw Exception('${streamedResponse.statusCode}\n$errorText');
|
||||
// }
|
||||
// final utf8Stream = streamedResponse.stream.transform(utf8.decoder);
|
||||
// await for (final chunk in utf8Stream) {
|
||||
// yield chunk;
|
||||
// }
|
||||
// } catch (e) {
|
||||
// rethrow;
|
||||
// }
|
||||
// }
|
||||
|
||||
String getCharset(String contentType) {
|
||||
final match = RegExp(
|
||||
r'charset=([^\s;]+)',
|
||||
caseSensitive: false,
|
||||
).firstMatch(contentType);
|
||||
return match?.group(1)?.toLowerCase() ?? 'utf-8'; // default to utf-8
|
||||
}
|
||||
|
||||
String decodeBytes(List<int> bytes, String contentType) {
|
||||
String _decodeUtf16(List<int> bytes, Endian endianness) {
|
||||
final byteData = ByteData.sublistView(Uint8List.fromList(bytes));
|
||||
final codeUnits = <int>[];
|
||||
for (int i = 0; i + 1 < byteData.lengthInBytes; i += 2) {
|
||||
codeUnits.add(byteData.getUint16(i, endianness));
|
||||
}
|
||||
return String.fromCharCodes(codeUnits);
|
||||
}
|
||||
|
||||
final cSet = getCharset(contentType);
|
||||
switch (cSet) {
|
||||
case 'utf-8':
|
||||
case 'utf8':
|
||||
return utf8.decode(bytes, allowMalformed: true);
|
||||
case 'utf-16':
|
||||
case 'utf-16le':
|
||||
return _decodeUtf16(bytes, Endian.little);
|
||||
case 'utf-16be':
|
||||
return _decodeUtf16(bytes, Endian.big);
|
||||
case 'iso-8859-1':
|
||||
case 'latin1':
|
||||
return latin1.decode(bytes);
|
||||
case 'us-ascii':
|
||||
case 'ascii':
|
||||
return ascii.decode(bytes);
|
||||
default:
|
||||
return utf8.decode(bytes, allowMalformed: true); //UTF8
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user