import 'package:equatable/equatable.dart'; import 'package:gitea_client/model/user.dart'; class Repository extends Equatable { int id; User owner; String name; String? fullName; String? description; bool? empty; bool? private; bool? fork; bool? template; bool? mirror; int? size; String? language; String? languagesUrl; String? htmlUrl; String? sshUrl; String? cloneUrl; String? originalUrl; String? website; int? starsCount; int? forksCount; int? watchersCount; int? openIssuesCount; int? openPrCounter; int? releaseCounter; String? defaultBranch; bool? archived; String? createdAt; DateTime? updatedAt; Permissions? permissions; bool? hasIssues; InternalTracker? internalTracker; bool? hasWiki; bool? hasPullRequests; bool? hasProjects; bool? ignoreWhitespaceConflicts; bool? allowMergeCommits; bool? allowRebase; bool? allowRebaseExplicit; bool? allowSquashMerge; String? defaultMergeStyle; String? avatarUrl; bool? internal; String? mirrorInterval; String? mirrorUpdated; Repository( {required this.id, required this.owner, required this.name, this.fullName, this.description, this.empty, this.private, this.fork, this.template, this.mirror, this.size, this.language, this.languagesUrl, this.htmlUrl, this.sshUrl, this.cloneUrl, this.originalUrl, this.website, this.starsCount, this.forksCount, this.watchersCount, this.openIssuesCount, this.openPrCounter, this.releaseCounter, this.defaultBranch, this.archived, this.createdAt, this.updatedAt, this.permissions, this.hasIssues, this.internalTracker, this.hasWiki, this.hasPullRequests, this.hasProjects, this.ignoreWhitespaceConflicts, this.allowMergeCommits, this.allowRebase, this.allowRebaseExplicit, this.allowSquashMerge, this.defaultMergeStyle, this.avatarUrl, this.internal, this.mirrorInterval, this.mirrorUpdated}); Repository.fromJson(Map json) : name = json['name'], id = json['id'], owner = User.fromJson(json['owner']) { fullName = json['full_name']; description = json['description']; empty = json['empty']; private = json['private']; fork = json['fork']; template = json['template']; mirror = json['mirror']; size = json['size']; language = json['language']; languagesUrl = json['languages_url']; htmlUrl = json['html_url']; sshUrl = json['ssh_url']; cloneUrl = json['clone_url']; originalUrl = json['original_url']; website = json['website']; starsCount = json['stars_count']; forksCount = json['forks_count']; watchersCount = json['watchers_count']; openIssuesCount = json['open_issues_count']; openPrCounter = json['open_pr_counter']; releaseCounter = json['release_counter']; defaultBranch = json['default_branch']; archived = json['archived']; createdAt = json['created_at']; updatedAt = DateTime.parse(json['updated_at']); permissions = json['permissions'] != null ? Permissions.fromJson(json['permissions']) : null; hasIssues = json['has_issues']; internalTracker = json['internal_tracker'] != null ? InternalTracker.fromJson(json['internal_tracker']) : null; hasWiki = json['has_wiki']; hasPullRequests = json['has_pull_requests']; hasProjects = json['has_projects']; ignoreWhitespaceConflicts = json['ignore_whitespace_conflicts']; allowMergeCommits = json['allow_merge_commits']; allowRebase = json['allow_rebase']; allowRebaseExplicit = json['allow_rebase_explicit']; allowSquashMerge = json['allow_squash_merge']; defaultMergeStyle = json['default_merge_style']; avatarUrl = json['avatar_url']; internal = json['internal']; mirrorInterval = json['mirror_interval']; mirrorUpdated = json['mirror_updated']; } Map toJson() { final Map data = {}; data['id'] = id; data['owner'] = owner.toJson(); data['name'] = name; data['full_name'] = fullName; data['description'] = description; data['empty'] = empty; data['private'] = private; data['fork'] = fork; data['template'] = template; data['mirror'] = mirror; data['size'] = size; data['language'] = language; data['languages_url'] = languagesUrl; data['html_url'] = htmlUrl; data['ssh_url'] = sshUrl; data['clone_url'] = cloneUrl; data['original_url'] = originalUrl; data['website'] = website; data['stars_count'] = starsCount; data['forks_count'] = forksCount; data['watchers_count'] = watchersCount; data['open_issues_count'] = openIssuesCount; data['open_pr_counter'] = openPrCounter; data['release_counter'] = releaseCounter; data['default_branch'] = defaultBranch; data['archived'] = archived; data['created_at'] = createdAt; data['updated_at'] = updatedAt; if (permissions != null) { data['permissions'] = permissions!.toJson(); } data['has_issues'] = hasIssues; if (internalTracker != null) { data['internal_tracker'] = internalTracker!.toJson(); } data['has_wiki'] = hasWiki; data['has_pull_requests'] = hasPullRequests; data['has_projects'] = hasProjects; data['ignore_whitespace_conflicts'] = ignoreWhitespaceConflicts; data['allow_merge_commits'] = allowMergeCommits; data['allow_rebase'] = allowRebase; data['allow_rebase_explicit'] = allowRebaseExplicit; data['allow_squash_merge'] = allowSquashMerge; data['default_merge_style'] = defaultMergeStyle; data['avatar_url'] = avatarUrl; data['internal'] = internal; data['mirror_interval'] = mirrorInterval; data['mirror_updated'] = mirrorUpdated; return data; } @override List get props => [id, owner, name]; } class Permissions { bool? admin; bool? push; bool? pull; Permissions({this.admin, this.push, this.pull}); Permissions.fromJson(Map json) { admin = json['admin']; push = json['push']; pull = json['pull']; } Map toJson() { final Map data = {}; data['admin'] = admin; data['push'] = push; data['pull'] = pull; return data; } } class InternalTracker { bool? enableTimeTracker; bool? allowOnlyContributorsToTrackTime; bool? enableIssueDependencies; InternalTracker( {this.enableTimeTracker, this.allowOnlyContributorsToTrackTime, this.enableIssueDependencies}); InternalTracker.fromJson(Map json) { enableTimeTracker = json['enable_time_tracker']; allowOnlyContributorsToTrackTime = json['allow_only_contributors_to_track_time']; enableIssueDependencies = json['enable_issue_dependencies']; } Map toJson() { final Map data = {}; data['enable_time_tracker'] = enableTimeTracker; data['allow_only_contributors_to_track_time'] = allowOnlyContributorsToTrackTime; data['enable_issue_dependencies'] = enableIssueDependencies; return data; } }