makeRequest function
Makes new requests
Throws RateLimitException if rate limit was exceeded and you need to wait to make new requests Throws an ApiUnavailableException if API is currently unavailable
Uses stateStream under the hood
Implementation
Future<Request> makeRequest() async {
final url = Uri.parse(API_BASE_URL + 'roll/');
final rollRes = await http.get(url, headers: HEADERS);
if (rollRes.statusCode >= 200 && rollRes.statusCode < 300) {
final uuid = rollRes.body;
return Request(uuid, stateStream(uuid));
} else if (rollRes.statusCode == 429) {
final resetEp = rollRes.headers['x-ratelimit-reset'];
final reset = resetEp != null
? DateTime.fromMillisecondsSinceEpoch(
(num.parse(resetEp) * 1000).toInt(),
)
: null;
throw RateLimitException(
'$url : ${rollRes.statusCode} : ${rollRes.body}', reset);
} else if (rollRes.statusCode == 502) {
throw ApiUnavailableException(
'$url : ${rollRes.statusCode} ${rollRes.body}');
} else {
throw ApiException('$url : ${rollRes.statusCode} : ${rollRes.body}');
}
}