Future<Map>
exec(- String method,
- String name,
- {dynamic fields = const {},
- dynamic objectId = '',
- dynamic queries = const {},
- dynamic path = '',
- dynamic multipart = false}
)
Implementation
Future<Map> exec(String method, String name,
{fields = const {},
objectId = '',
queries = const {},
path = '',
multipart = false}) async {
Signature s = new Signature(NCMBRequest.ncmb!);
DateTime time = DateTime.now();
final newFields = Map.from(fields)
..removeWhere((k, v) =>
(k == 'objectId' || k == 'createDate' || k == 'updateDate'));
String signature = s.generate(method, name, time,
objectId: objectId, queries: queries, definePath: path);
String url =
s.url(name, objectId: objectId, queries: queries, definePath: path);
Map<String, String> headers = {
"X-NCMB-Application-Key": NCMBRequest.ncmb!.applicationKey!,
"X-NCMB-Timestamp": time.toIso8601String(),
"X-NCMB-Signature": signature
};
if (name == 'files') {
headers.remove('Content-Type');
}
var sessionToken = NCMBRequest.ncmb!.sessionToken;
if (sessionToken != null) {
headers['X-NCMB-Apps-Session-Token'] = sessionToken;
}
try {
var response = await req(url, method, newFields, headers,
multipart: multipart, fileName: objectId);
if (response.data is Uint8List) {
return {"data": response.data};
}
if (method == 'DELETE') return {};
return response.data;
} on DioError catch (e) {
throw Exception(e.response!.data);
}
}