mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-30 19:36:25 +08:00
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:
@ -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 {
|
||||||
|
@ -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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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'],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user