generate method Null safety

String generate(
  1. String method,
  2. String className,
  3. DateTime time,
  4. {dynamic objectId = '',
  5. dynamic queries = const {},
  6. dynamic definePath = ''}
)

署名を生成する method リクエストメソッド className クラス名 time タイムスタンプ objectId オブジェクトID。省略時は空文字。 queries クエリ。省略時は空のMap。 definePath あらかじめ決まっているパス。省略時は空文字。

Implementation

String generate(String method, String className, DateTime time,
    {objectId = '', queries = const {}, definePath = ''}) {
  baseInfo['X-NCMB-Timestamp'] = time.toUtc().toIso8601String();
  List sigList = [];
  if (method == 'GET' || !_isScript) {
    queries.forEach((key, value) {
      if (value is Map || value is List) {
        value = jsonEncode(value);
      }
      if (value is int) {
        value = value.toString();
      }
      baseInfo[key] = Uri.encodeQueryComponent(value);
    });
  }
  baseInfo.keys
      .toList()
      .forEach((key) => sigList.add("$key=${baseInfo[key]}"));
  sigList.sort();
  String queryString = sigList.join('&');
  String str = [
    method,
    fqdn(),
    path(className, objectId: objectId, definePath: definePath),
    queryString
  ].join("\n");
  List<int> key = utf8.encode(_ncmb!.clientKey!);
  Hmac hmac = new Hmac(sha256, key);
  return base64Encode(hmac.convert(str.codeUnits).bytes);
}