get<R> method
Implementation
@override
Future<Response<T>> get<R>(
String id, {
Map<String, dynamic>? extra,
R? Function(R parent)? source,
}) async {
final response = Response<T>();
try {
if (id.isNotEmpty && extra != null && extra.isNotEmpty) {
final value = await input(extra);
if (value.isNotEmpty) {
final url = currentUrl(id, source);
final reference = encryptor.type == ApiRequest.get
? await database.get(url, data: value)
: await database.post(url, data: value);
final data = reference.data;
final code = reference.statusCode;
if ((code == 200 || code == encryptor.status.ok) &&
data is Map<String, dynamic>) {
final result = build(data);
return response.copy(data: result);
} else {
final error = "Data unmodified [${reference.statusCode}]";
return response.copy(snapshot: reference, error: error);
}
} else {
const error = "Unacceptable request.";
return response.copy(error: error);
}
} else {
const error = "Undefined request.";
return response.copy(error: error);
}
} catch (_) {
return response.copy(error: _.toString());
}
}