generate method Null safety
署名を生成する
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);
}