getURL method
Performs a HTTP request for url
. Returns a String
with the body if OK.
Implementation
Future<String?> getURL(Uri url,
{Duration? minCertificateValidityTime,
bool checkCertificate = true,
bool log = true}) async {
HttpClient client = HttpClient()
..badCertificateCallback = badCertificateCallback;
var request = await client.getUrl(url);
var response = await request.close();
var ok = response.statusCode == 200;
if (!ok) return null;
var certificate = response.certificate;
if (certificate != null && checkCertificate) {
var now = DateTime.now();
var endValidity = certificate.endValidity;
var timeLeftInValidity = endValidity.difference(now);
if (timeLeftInValidity.isNegative) {
_logWarning(
"URL `${url.scheme}://${url.host}` certificate expired> timeLeftInValidity: ${timeLeftInValidity.inHours} h ; endValidity: $endValidity ; now: $now");
return null;
}
if (minCertificateValidityTime != null &&
timeLeftInValidity < minCertificateValidityTime) {
_logWarning(
"URL `${url.scheme}://${url.host}` certificate short validity period> timeLeftInValidity: ${timeLeftInValidity.inHours} h ; minCertificateValidityTime: ${minCertificateValidityTime.inHours} h ; endValidity: $endValidity ; now: $now");
return null;
}
}
var data = await response.transform(Utf8Decoder()).toList();
var body = data.join();
return body;
}