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