getHttp function
Implementation
Future<void> getHttp(String libName) async {
writeAnsi("----------------------------------------", c: AnsiColor.green);
writeAnsi("Package: $libName");
writeAnsi("----------------------------------------", c: AnsiColor.green);
var myClient = baseClient();
var resp = await myClient
.get(Uri.parse("https://pub.dev/packages/$libName"))
.timeout(const Duration(seconds: 10));
if (resp.statusCode == 200) {
final html = parse(resp.body.toString());
var publisher = "";
try {
html.getElementsByClassName("-pub-publisher").first.text.toString();
} catch (e) {
publisher = "unverified uploader";
}
var timeAgo = "";
try {
timeAgo = html.getElementsByClassName("-x-ago").first.text;
} catch (e) {
timeAgo = "unknown";
}
var likesCnt = "";
try {
likesCnt = html.getElementById("likes-count")?.text.toString() ?? "";
} catch (e) {
likesCnt = "unknown";
}
var badges = "";
try {
badges =
html.getElementsByClassName("package-badge").first.text.toString();
} catch (e) {
badges = "unknown";
}
var issuesLink = "";
try {
issuesLink = html
.getElementsByTagName("a")
.firstWhere((e) => e.innerHtml.toString() == "View/report issues")
.attributes["href"] ??
"";
} catch (e) {
issuesLink = "";
}
writeAnsi("publisher: $publisher");
var update = updateCheck(timeAgo);
writeAnsi(
"$timeAgo ${update == RuleType.normal ? "✅" : update == RuleType.warning ? "⚠️" : "❌"}",
c: update == RuleType.normal
? AnsiColor.green
: update == RuleType.warning
? AnsiColor.yellow
: AnsiColor.red);
writeAnsi("$likesCnt likes");
writeAnsi(badges,
c: badges.startsWith("in") ? AnsiColor.red : AnsiColor.green);
if (issuesLink == "") {
writeAnsi("No issues link", c: AnsiColor.yellow);
} else {
var issues = await getIssues(issuesLink.toString());
var issueCheck = openIssueCheck(issues);
writeAnsi(issues,
c: issueCheck == RuleType.normal
? AnsiColor.green
: issueCheck == RuleType.warning
? AnsiColor.yellow
: AnsiColor.red);
}
} else {
writeAnsi(
"pub.dev is not responding for $libName and status code is ${resp.statusCode}",
c: AnsiColor.red);
}
}