canonicalize method

String canonicalize(
  1. Map<String, String> _params
)

Implementation

String canonicalize(Map<String, String> _params) {
  final List<String> keys = _params.keys.toList()..sort();
  final Map<String, String> parameters = <String, String>{
    for (final String key in keys) key: _params[key]!,
  };
  String _result = '';
  for (final MapEntry<String, String> entry in parameters.entries) {
    // 先编码 value,再整体进行编码。
    _result += _encode('${entry.key}=${_encode(entry.value)}&');
  }
  // 移除末尾的「&」。
  if (_result.endsWith('%26')) {
    _result = _result.substring(0, _result.length - 3);
  }
  // 全局替换编码出的多余的「25」。
  return _result.replaceAll('%25253A', '%253A');
}