RepoList: Parse more information

This way in the future we can make the repo list a bit prettier. It
currently looks quite ugly.
This commit is contained in:
Vishesh Handa
2020-09-03 20:54:46 +02:00
parent b96513b25f
commit e4fd84d4a4
3 changed files with 62 additions and 6 deletions

View File

@ -16,9 +16,9 @@ abstract class GitHost {
} }
class UserInfo { class UserInfo {
String name; final String name;
String email; final String email;
String username; final String username;
UserInfo({ UserInfo({
@required this.name, @required this.name,
@ -29,19 +29,50 @@ class UserInfo {
class GitHostRepo { class GitHostRepo {
final String fullName; final String fullName;
final String description;
final String cloneUrl; final String cloneUrl;
final DateTime updatedAt; final DateTime updatedAt;
final bool private;
final int stars;
final int forks;
final String language;
final int issues;
final String license;
final List<String> tags;
GitHostRepo({ GitHostRepo({
@required this.fullName, @required this.fullName,
@required this.description,
@required this.cloneUrl, @required this.cloneUrl,
@required this.updatedAt, @required this.updatedAt,
@required this.private,
@required this.stars,
@required this.forks,
@required this.language,
@required this.issues,
@required this.tags,
@required this.license,
}); });
Map<String, dynamic> toJson() => {
'fullName': fullName,
'description': description,
'cloneUrl': cloneUrl,
'updatedAt': updatedAt,
'private': private,
'stars': stars,
'forks': forks,
'language': language,
'issues': issues,
'tags': tags,
'license': license,
};
@override @override
String toString() { String toString() => toJson().toString();
return 'GitRepo{fulleName: $fullName, cloneUrl: $cloneUrl, updatedAt: $updatedAt}';
}
} }
class GitHostException implements Exception { class GitHostException implements Exception {

View File

@ -217,10 +217,26 @@ class GitHub implements GitHost {
} catch (e) { } catch (e) {
Log.e(e); Log.e(e);
} }
var licenseMap = parsedJson['license'];
/*
print("");
parsedJson.forEach((key, value) => print(" $key: $value"));
print("");
*/
return GitHostRepo( return GitHostRepo(
fullName: parsedJson['full_name'], fullName: parsedJson['full_name'],
cloneUrl: parsedJson['ssh_url'], cloneUrl: parsedJson['ssh_url'],
updatedAt: updatedAt, updatedAt: updatedAt,
description: parsedJson['description'],
stars: parsedJson['stargazers_count'],
forks: parsedJson['forks_count'],
issues: parsedJson['open_issues_count'],
language: parsedJson['language'],
private: parsedJson['private'],
tags: parsedJson['topics'],
license: licenseMap != null ? licenseMap['spdx_id'] : null,
); );
} }

View File

@ -201,11 +201,20 @@ class GitLab implements GitHost {
} catch (e) { } catch (e) {
Log.e(e); Log.e(e);
} }
var licenseMap = parsedJson['license'];
return GitHostRepo( return GitHostRepo(
fullName: parsedJson['path_with_namespace'], fullName: parsedJson['path_with_namespace'],
cloneUrl: parsedJson['ssh_url_to_repo'], cloneUrl: parsedJson['ssh_url_to_repo'],
updatedAt: updatedAt, updatedAt: updatedAt,
description: parsedJson['description'],
stars: parsedJson['star_count'],
forks: parsedJson['forks_count'],
issues: parsedJson['open_issues_count'],
language: parsedJson['language'],
private: parsedJson['visibility'] == 'private',
tags: parsedJson['tag_list'],
license: licenseMap ?? licenseMap['nickname'],
); );
} }