2019-12-08 14:21:14 +08:00
|
|
|
import 'package:git_touch/utils/utils.dart';
|
|
|
|
import 'package:json_annotation/json_annotation.dart';
|
|
|
|
import 'package:tuple/tuple.dart';
|
|
|
|
|
2019-12-12 14:02:48 +08:00
|
|
|
part 'github.g.dart';
|
2019-12-08 14:21:14 +08:00
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubEvent {
|
2021-05-16 15:16:35 +08:00
|
|
|
GithubEventUser? actor;
|
|
|
|
String? type;
|
|
|
|
GithubEventRepo? repo;
|
|
|
|
DateTime? createdAt;
|
|
|
|
GithubEventPayload? payload;
|
2019-12-08 14:21:14 +08:00
|
|
|
|
2021-05-16 15:16:35 +08:00
|
|
|
Tuple2<String, String>? _repo;
|
2019-12-08 14:21:14 +08:00
|
|
|
String get repoOwner {
|
|
|
|
if (_repo == null) {
|
2021-05-16 15:16:35 +08:00
|
|
|
_repo = parseRepositoryFullName(repo!.name!);
|
2019-12-08 14:21:14 +08:00
|
|
|
}
|
2021-05-16 15:16:35 +08:00
|
|
|
return _repo!.item1;
|
2019-12-08 14:21:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
String get repoName {
|
|
|
|
if (_repo == null) {
|
2021-05-16 15:16:35 +08:00
|
|
|
_repo = parseRepositoryFullName(repo!.name!);
|
2019-12-08 14:21:14 +08:00
|
|
|
}
|
2021-05-16 15:16:35 +08:00
|
|
|
return _repo!.item2;
|
2019-12-08 14:21:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
GithubEvent();
|
|
|
|
|
|
|
|
factory GithubEvent.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubEventFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
2019-12-20 20:52:49 +08:00
|
|
|
class GithubEventUser {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? login;
|
|
|
|
String? avatarUrl;
|
2019-12-08 14:21:14 +08:00
|
|
|
|
2019-12-20 20:52:49 +08:00
|
|
|
GithubEventUser();
|
2019-12-08 14:21:14 +08:00
|
|
|
|
2019-12-20 20:52:49 +08:00
|
|
|
factory GithubEventUser.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubEventUserFromJson(json);
|
2019-12-08 14:21:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubEventRepo {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? name;
|
2019-12-08 14:21:14 +08:00
|
|
|
|
|
|
|
GithubEventRepo();
|
|
|
|
|
|
|
|
factory GithubEventRepo.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubEventRepoFromJson(json);
|
|
|
|
}
|
2019-12-12 14:02:48 +08:00
|
|
|
|
2019-12-20 20:52:49 +08:00
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubEventPayload {
|
2021-05-16 15:16:35 +08:00
|
|
|
GithubEventIssue? issue;
|
|
|
|
GithubEventIssue? pullRequest;
|
|
|
|
GithubEventComment? comment;
|
|
|
|
GithubEventRelease? release;
|
|
|
|
String? action;
|
|
|
|
String? ref;
|
|
|
|
String? refType;
|
|
|
|
String? before;
|
|
|
|
String? head;
|
|
|
|
List<GithubEventCommit>? commits;
|
|
|
|
Map<String, dynamic>? forkee;
|
|
|
|
List<GithubPagesItem>? pages;
|
|
|
|
GithubSecurityItem? securityAdvisory;
|
|
|
|
GithubAlertItem? alert;
|
|
|
|
GithubProjectItem? project;
|
|
|
|
GithubProjectColumnItem? projectColumn;
|
|
|
|
GithubInstallationRepositoriesItem? installation;
|
|
|
|
GithubCheckrunItem? checkRun;
|
|
|
|
GithubCheckSuiteItem? checkSuite;
|
|
|
|
GithubContentReferenceItem? contentReference;
|
2019-12-20 20:52:49 +08:00
|
|
|
GithubEventPayload();
|
|
|
|
|
|
|
|
factory GithubEventPayload.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubEventPayloadFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubEventIssue {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? title;
|
|
|
|
GithubEventUser? user;
|
|
|
|
int? number;
|
|
|
|
String? body;
|
2019-12-20 20:52:49 +08:00
|
|
|
dynamic pullRequest;
|
2021-05-16 15:16:35 +08:00
|
|
|
String? state;
|
|
|
|
int? comments;
|
|
|
|
bool? merged;
|
|
|
|
DateTime? createdAt;
|
2019-12-20 22:41:38 +08:00
|
|
|
|
|
|
|
bool get isPullRequestComment => pullRequest != null;
|
2019-12-20 20:52:49 +08:00
|
|
|
|
|
|
|
GithubEventIssue();
|
|
|
|
|
|
|
|
factory GithubEventIssue.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubEventIssueFromJson(json);
|
|
|
|
}
|
|
|
|
|
2019-12-25 10:46:56 +08:00
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
2019-12-20 20:52:49 +08:00
|
|
|
class GithubEventComment {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? body;
|
|
|
|
GithubEventUser? user;
|
|
|
|
String? commitId;
|
|
|
|
String? htmlUrl;
|
2019-12-20 20:52:49 +08:00
|
|
|
|
|
|
|
GithubEventComment();
|
|
|
|
|
|
|
|
factory GithubEventComment.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubEventCommentFromJson(json);
|
|
|
|
}
|
|
|
|
|
2019-12-25 10:46:56 +08:00
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
2019-12-20 20:52:49 +08:00
|
|
|
class GithubEventCommit {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? sha;
|
|
|
|
String? message;
|
2019-12-20 20:52:49 +08:00
|
|
|
|
|
|
|
GithubEventCommit();
|
|
|
|
|
|
|
|
factory GithubEventCommit.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubEventCommitFromJson(json);
|
|
|
|
}
|
|
|
|
|
2019-12-25 10:46:56 +08:00
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubEventRelease {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? htmlUrl;
|
|
|
|
String? tagName;
|
2019-12-25 10:46:56 +08:00
|
|
|
|
|
|
|
GithubEventRelease();
|
|
|
|
|
|
|
|
factory GithubEventRelease.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubEventReleaseFromJson(json);
|
|
|
|
}
|
|
|
|
|
2019-12-26 18:00:36 +08:00
|
|
|
// Notification
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubNotificationItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? id;
|
|
|
|
GithubNotificationItemSubject? subject;
|
|
|
|
DateTime? updatedAt;
|
|
|
|
GithubNotificationItemRepo? repository;
|
|
|
|
bool? unread;
|
2019-12-26 18:00:36 +08:00
|
|
|
|
|
|
|
@JsonKey(ignore: true)
|
2021-05-16 15:16:35 +08:00
|
|
|
String? state;
|
2019-12-26 18:00:36 +08:00
|
|
|
|
|
|
|
String get key => '_$hashCode';
|
|
|
|
|
|
|
|
GithubNotificationItem();
|
|
|
|
|
|
|
|
factory GithubNotificationItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubNotificationItemFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubNotificationItemSubject {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? title;
|
|
|
|
String? type;
|
|
|
|
String? url;
|
2019-12-26 18:00:36 +08:00
|
|
|
|
2021-05-16 15:16:35 +08:00
|
|
|
int? _number;
|
|
|
|
int? get number {
|
2019-12-26 18:00:36 +08:00
|
|
|
if (_number == null) {
|
2021-06-05 13:54:52 +08:00
|
|
|
_number = int.parse(url?.split('/').last ?? '0');
|
2019-12-26 18:00:36 +08:00
|
|
|
}
|
|
|
|
return _number;
|
|
|
|
}
|
|
|
|
|
|
|
|
GithubNotificationItemSubject();
|
|
|
|
|
|
|
|
factory GithubNotificationItemSubject.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubNotificationItemSubjectFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubNotificationItemRepo {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? fullName;
|
2019-12-26 18:00:36 +08:00
|
|
|
|
2021-05-16 15:16:35 +08:00
|
|
|
Tuple2<String, String>? _repo;
|
2019-12-26 18:00:36 +08:00
|
|
|
String get owner {
|
|
|
|
if (_repo == null) {
|
2021-05-16 15:16:35 +08:00
|
|
|
_repo = parseRepositoryFullName(fullName!);
|
2019-12-26 18:00:36 +08:00
|
|
|
}
|
2021-05-16 15:16:35 +08:00
|
|
|
return _repo!.item1;
|
2019-12-26 18:00:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
String get name {
|
|
|
|
if (_repo == null) {
|
2021-05-16 15:16:35 +08:00
|
|
|
_repo = parseRepositoryFullName(fullName!);
|
2019-12-26 18:00:36 +08:00
|
|
|
}
|
2021-05-16 15:16:35 +08:00
|
|
|
return _repo!.item2;
|
2019-12-26 18:00:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
GithubNotificationItemRepo();
|
|
|
|
|
|
|
|
factory GithubNotificationItemRepo.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubNotificationItemRepoFromJson(json);
|
|
|
|
}
|
|
|
|
|
2020-01-31 14:09:00 +08:00
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubTreeItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? name;
|
|
|
|
String? path;
|
|
|
|
int? size;
|
|
|
|
String? type;
|
|
|
|
String? downloadUrl;
|
|
|
|
String? content;
|
2020-01-31 14:09:00 +08:00
|
|
|
GithubTreeItem();
|
|
|
|
factory GithubTreeItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubTreeItemFromJson(json);
|
|
|
|
}
|
2020-04-08 08:21:04 +05:30
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubPagesItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? pageName;
|
|
|
|
String? title;
|
|
|
|
String? action;
|
2020-04-08 08:21:04 +05:30
|
|
|
GithubPagesItem();
|
2020-04-16 11:36:48 +08:00
|
|
|
factory GithubPagesItem.fromJson(Map<String, dynamic> json) =>
|
2020-04-08 08:21:04 +05:30
|
|
|
_$GithubPagesItemFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubSecurityItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? summary;
|
|
|
|
String? description;
|
|
|
|
String? severity;
|
2020-04-08 08:21:04 +05:30
|
|
|
GithubSecurityItem();
|
2020-04-16 11:36:48 +08:00
|
|
|
factory GithubSecurityItem.fromJson(Map<String, dynamic> json) =>
|
2020-04-08 08:21:04 +05:30
|
|
|
_$GithubSecurityItemFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubAlertItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? affectedPackageName;
|
|
|
|
String? affectedRange;
|
2020-04-08 08:21:04 +05:30
|
|
|
GithubAlertItem();
|
|
|
|
factory GithubAlertItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubAlertItemFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubProjectItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? name;
|
|
|
|
String? state;
|
|
|
|
String? body;
|
|
|
|
String? htmlUrl;
|
2020-04-08 08:21:04 +05:30
|
|
|
GithubProjectItem();
|
|
|
|
factory GithubProjectItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubProjectItemFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubProjectColumnItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? htmlUrl;
|
|
|
|
String? columnsUrl;
|
|
|
|
String? name;
|
2020-04-08 08:21:04 +05:30
|
|
|
GithubProjectColumnItem();
|
|
|
|
factory GithubProjectColumnItem.fromJson(Map<String, dynamic> json) =>
|
2020-04-16 11:36:48 +08:00
|
|
|
_$GithubProjectColumnItemFromJson(json);
|
2020-04-08 08:21:04 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubInstallationRepositoriesItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
List<GithubNotificationItemRepo>? repositoriesAdded, repositoriesRemoved;
|
|
|
|
String? repositoriesSelection;
|
|
|
|
int? id;
|
2020-04-08 08:21:04 +05:30
|
|
|
GithubInstallationRepositoriesItem();
|
2020-04-16 11:36:48 +08:00
|
|
|
factory GithubInstallationRepositoriesItem.fromJson(
|
|
|
|
Map<String, dynamic> json) =>
|
2020-04-08 08:21:04 +05:30
|
|
|
_$GithubInstallationRepositoriesItemFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubCheckrunItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? status;
|
|
|
|
String? name;
|
|
|
|
int? id;
|
2020-04-08 08:21:04 +05:30
|
|
|
GithubCheckrunItem();
|
|
|
|
factory GithubCheckrunItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubCheckrunItemFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubCheckSuiteItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? status;
|
|
|
|
String? conclusion;
|
2020-04-08 08:21:04 +05:30
|
|
|
GithubCheckSuiteItem();
|
2020-04-16 11:36:48 +08:00
|
|
|
factory GithubCheckSuiteItem.fromJson(Map<String, dynamic> json) =>
|
2020-04-08 08:21:04 +05:30
|
|
|
_$GithubCheckSuiteItemFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubContentReferenceItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
int? id;
|
|
|
|
String? reference;
|
2020-04-08 08:21:04 +05:30
|
|
|
GithubContentReferenceItem();
|
|
|
|
factory GithubContentReferenceItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubContentReferenceItemFromJson(json);
|
|
|
|
}
|
2020-04-25 16:01:32 +05:30
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubContributorItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
int? id;
|
|
|
|
String? login;
|
|
|
|
String? avatarUrl;
|
|
|
|
String? htmlUrl;
|
|
|
|
int? contributions;
|
2020-04-25 16:01:32 +05:30
|
|
|
GithubContributorItem();
|
|
|
|
factory GithubContributorItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubContributorItemFromJson(json);
|
|
|
|
}
|
2020-04-28 22:29:01 +05:30
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubUserOrganizationItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
int? id;
|
|
|
|
String? login;
|
|
|
|
String? avatarUrl;
|
|
|
|
String? description;
|
|
|
|
String? url;
|
2020-04-28 22:29:01 +05:30
|
|
|
GithubUserOrganizationItem();
|
|
|
|
factory GithubUserOrganizationItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubUserOrganizationItemFromJson(json);
|
|
|
|
}
|
2020-04-30 21:34:24 +05:30
|
|
|
|
2020-05-14 10:58:12 +05:30
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GistFiles {
|
|
|
|
GistFiles({
|
|
|
|
this.filename,
|
|
|
|
this.size,
|
|
|
|
this.rawUrl,
|
|
|
|
this.type,
|
|
|
|
this.language,
|
|
|
|
this.truncated,
|
|
|
|
this.content,
|
|
|
|
});
|
2021-05-16 15:16:35 +08:00
|
|
|
String? filename;
|
|
|
|
int? size;
|
|
|
|
String? rawUrl;
|
|
|
|
String? type;
|
|
|
|
String? language;
|
|
|
|
bool? truncated;
|
|
|
|
String? content;
|
2020-05-14 10:58:12 +05:30
|
|
|
|
|
|
|
factory GistFiles.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GistFilesFromJson(json);
|
|
|
|
}
|
|
|
|
|
2020-04-30 21:34:24 +05:30
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubGistsItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? id;
|
|
|
|
String? description;
|
|
|
|
bool? public;
|
|
|
|
Map<String, GistFiles>? files;
|
|
|
|
GithubEventUser? owner;
|
2020-05-14 10:58:12 +05:30
|
|
|
List<GistFiles> get fileNames {
|
|
|
|
List<GistFiles> filenames = [];
|
2021-05-16 15:16:35 +08:00
|
|
|
files!.forEach((String key, GistFiles value) {
|
2020-05-14 10:58:12 +05:30
|
|
|
filenames.add(value);
|
|
|
|
});
|
|
|
|
return filenames;
|
|
|
|
}
|
|
|
|
|
2021-05-16 15:16:35 +08:00
|
|
|
DateTime? createdAt;
|
|
|
|
DateTime? updatedAt;
|
2020-05-14 10:58:12 +05:30
|
|
|
|
2020-04-30 21:34:24 +05:30
|
|
|
GithubGistsItem();
|
|
|
|
factory GithubGistsItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubGistsItemFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubFilesItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
String? filename;
|
|
|
|
String? status;
|
|
|
|
int? additions;
|
|
|
|
int? deletions;
|
|
|
|
int? changes;
|
|
|
|
String? patch;
|
2020-04-30 21:34:24 +05:30
|
|
|
GithubFilesItem();
|
|
|
|
factory GithubFilesItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubFilesItemFromJson(json);
|
|
|
|
}
|
2020-05-12 18:33:13 +05:30
|
|
|
|
|
|
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
|
|
class GithubComparisonItem {
|
2021-05-16 15:16:35 +08:00
|
|
|
List<GithubFilesItem>? files;
|
|
|
|
String? status;
|
|
|
|
int? aheadBy;
|
|
|
|
int? behindBy;
|
2020-05-12 18:33:13 +05:30
|
|
|
GithubComparisonItem();
|
|
|
|
factory GithubComparisonItem.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$GithubComparisonItemFromJson(json);
|
|
|
|
}
|