LCOV - code coverage report
Current view: top level - src - utils.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 27 28 96.4 %
Date: 2020-02-27 17:47:50 Functions: 0 0 -

          Line data    Source code
       1             : import 'dart:async';
       2             : 
       3             : import 'dart:convert';
       4             : 
       5             : /// A regular expression that matches strings that are composed entirely of
       6             : /// ASCII-compatible characters.
       7           3 : final RegExp _asciiOnly = RegExp(r'^[\x00-\x7F]+$');
       8             : 
       9             : /// Returns whether [string] is composed entirely of ASCII-compatible
      10             : /// characters.
      11           3 : bool isPlainAscii(String string) => _asciiOnly.hasMatch(string);
      12             : 
      13             : /// Pipes all data and errors from [stream] into [sink]. Completes [Future] once
      14             : /// [stream] is done. Unlike [store], [sink] remains open after [stream] is
      15             : /// done.
      16           1 : Future writeStreamToSink(Stream stream, EventSink sink) {
      17           1 :   var completer = Completer();
      18           2 :   stream.listen(sink.add,
      19           3 :       onError: sink.addError, onDone: () => completer.complete());
      20           1 :   return completer.future;
      21             : }
      22             : 
      23             : /// Returns the [Encoding] that corresponds to [charset]. Returns [fallback] if
      24             : /// [charset] is null or if no [Encoding] was found that corresponds to
      25             : /// [charset].
      26           1 : Encoding encodingForCharset(String charset, [Encoding fallback = latin1]) {
      27             :   if (charset == null) return fallback;
      28           0 :   var encoding = Encoding.getByName(charset);
      29             :   return encoding ?? fallback;
      30             : }
      31             : 
      32             : typedef DioEncodeHandler = Function(String key, Object value);
      33             : 
      34           6 : String encodeMap(data, DioEncodeHandler handler, {bool encode = true}) {
      35           6 :   var urlData = StringBuffer('');
      36             :   var first = true;
      37             :   var leftBracket = encode ? '%5B' : '[';
      38             :   var rightBracket = encode ? '%5D' : ']';
      39           1 :   var encodeComponent = encode ? Uri.encodeQueryComponent : (e) => e;
      40           6 :   void urlEncode(dynamic sub, String path) {
      41           6 :     if (sub is List) {
      42           6 :       for (var i = 0; i < sub.length; i++) {
      43           4 :         urlEncode(sub[i],
      44          10 :             '$path$leftBracket${(sub[i] is Map || sub[i] is List) ? i : ''}$rightBracket');
      45             :       }
      46           6 :     } else if (sub is Map) {
      47           9 :       sub.forEach((k, v) {
      48           3 :         if (path == '') {
      49           9 :           urlEncode(v, '${encodeComponent(k)}');
      50             :         } else {
      51           3 :           urlEncode(v, '$path$leftBracket${encodeComponent(k)}$rightBracket');
      52             :         }
      53             :       });
      54             :     } else {
      55           3 :       var str = handler(path, sub);
      56           4 :       var isNotEmpty = str != null && str.trim().isNotEmpty;
      57             :       if (!first && isNotEmpty) {
      58           2 :         urlData.write('&');
      59             :       }
      60             :       first = false;
      61             :       if (isNotEmpty) {
      62           2 :         urlData.write(str);
      63             :       }
      64             :     }
      65             :   }
      66             : 
      67           6 :   urlEncode(data, '');
      68           6 :   return urlData.toString();
      69             : }

Generated by: LCOV version 1.14