Skip to content

Commit e4146ac

Browse files
committed
moving more classes to JsonSerializable
1 parent 63a6bc0 commit e4146ac

16 files changed

+132
-105
lines changed

lib/src/common/activity_service.dart

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class ActivityService extends Service {
1818
/// API docs: https://developer.github.com/v3/activity/events/#list-public-events
1919
Stream<Event> listPublicEvents({int pages = 2}) {
2020
return PaginationHelper(github)
21-
.objects('GET', '/events', Event.fromJSON, pages: pages);
21+
.objects('GET', '/events', (i) => Event.fromJson(i), pages: pages);
2222
}
2323

2424
/// Lists public events for a network of repositories.
@@ -27,7 +27,7 @@ class ActivityService extends Service {
2727
Stream<Event> listRepositoryNetworkEvents(RepositorySlug slug,
2828
{int pages = 2}) {
2929
return PaginationHelper(github).objects(
30-
'GET', '/networks/${slug.fullName}/events', Event.fromJSON,
30+
'GET', '/networks/${slug.fullName}/events', (i) => Event.fromJson(i),
3131
pages: pages);
3232
}
3333

@@ -47,8 +47,8 @@ class ActivityService extends Service {
4747
///
4848
/// API docs: https://developer.github.com/v3/activity/events/#list-repository-events
4949
Stream<Event> listRepositoryIssueEvents(RepositorySlug slug, {int pages}) {
50-
return PaginationHelper(github).objects(
51-
'GET', '/repos/${slug.fullName}/issues/events', Event.fromJSON,
50+
return PaginationHelper(github).objects('GET',
51+
'/repos/${slug.fullName}/issues/events', (i) => Event.fromJson(i),
5252
pages: pages);
5353
}
5454

@@ -62,7 +62,7 @@ class ActivityService extends Service {
6262
/// API docs: https://developer.github.com/v3/activity/events/#list-repository-events
6363
Stream<Event> listRepositoryEvents(RepositorySlug slug, {int pages}) {
6464
return PaginationHelper(github).objects(
65-
'GET', '/repos/${slug.fullName}/events', Event.fromJSON,
65+
'GET', '/repos/${slug.fullName}/events', (i) => Event.fromJson(i),
6666
pages: pages);
6767
}
6868

@@ -76,8 +76,9 @@ class ActivityService extends Service {
7676
///
7777
/// API docs: https://developer.github.com/v3/activity/events/#list-public-events-for-an-organization
7878
Stream<Event> listEventsForOrganization(String name, {int pages}) {
79-
return PaginationHelper(github)
80-
.objects('GET', '/orgs/$name/events', Event.fromJSON, pages: pages);
79+
return PaginationHelper(github).objects(
80+
'GET', '/orgs/$name/events', (i) => Event.fromJson(i),
81+
pages: pages);
8182
}
8283

8384
/// Returns an [EventPoller] for public events for an organization.
@@ -103,7 +104,7 @@ class ActivityService extends Service {
103104
/// API docs: https://developer.github.com/v3/activity/events/#list-events-performed-by-a-user
104105
Stream<Event> listEventsPerformedByUser(String username, {int pages}) {
105106
return PaginationHelper(github).objects(
106-
'GET', '/users/$username/events', Event.fromJSON,
107+
'GET', '/users/$username/events', (i) => Event.fromJson(i),
107108
pages: pages);
108109
}
109110

@@ -112,7 +113,7 @@ class ActivityService extends Service {
112113
/// API docs: https://developer.github.com/v3/activity/events/#list-public-events-performed-by-a-user
113114
Stream<Event> listPublicEventsPerformedByUser(String username, {int pages}) {
114115
return PaginationHelper(github).objects(
115-
'GET', '/users/$username/events/public', Event.fromJSON,
116+
'GET', '/users/$username/events/public', (i) => Event.fromJson(i),
116117
pages: pages);
117118
}
118119

@@ -214,15 +215,15 @@ class ActivityService extends Service {
214215
/// API docs: https://developer.github.com/v3/activity/starring/#list-repositories-being-starred
215216
Stream<Repository> listStarredByUser(String user) {
216217
return PaginationHelper(github)
217-
.objects('GET', '/users/$user/starred', Repository.fromJSON);
218+
.objects('GET', '/users/$user/starred', (i) => Repository.fromJson(i));
218219
}
219220

220221
/// Lists all the repos by the current user.
221222
///
222223
/// API docs: https://developer.github.com/v3/activity/starring/#list-repositories-being-starred
223224
Stream<Repository> listStarred() {
224225
return PaginationHelper(github)
225-
.objects('GET', '/user/starred', Repository.fromJSON);
226+
.objects('GET', '/user/starred', (i) => Repository.fromJson(i));
226227
}
227228

228229
/// Checks if the currently authenticated user has starred the specified repository.
@@ -268,16 +269,16 @@ class ActivityService extends Service {
268269
///
269270
/// API docs: https://developer.github.com/v3/activity/watching/#list-repositories-being-watched
270271
Stream<Repository> listWatchedByUser(String user) {
271-
return PaginationHelper(github)
272-
.objects('GET', '/users/$user/subscriptions', Repository.fromJSON);
272+
return PaginationHelper(github).objects(
273+
'GET', '/users/$user/subscriptions', (i) => Repository.fromJson(i));
273274
}
274275

275276
/// Lists the repositories the current user is watching.
276277
///
277278
/// API docs: https://developer.github.com/v3/activity/watching/#list-repositories-being-watched
278279
Stream<Repository> listWatched() {
279280
return PaginationHelper(github)
280-
.objects('GET', '/user/subscriptions', Repository.fromJSON);
281+
.objects('GET', '/user/subscriptions', (i) => Repository.fromJson(i));
281282
}
282283

283284
/// Fetches repository subscription information.
@@ -286,7 +287,8 @@ class ActivityService extends Service {
286287
Future<RepositorySubscription> getRepositorySubscription(
287288
RepositorySlug slug) =>
288289
github.getJSON('/repos/${slug.fullName}/subscription',
289-
statusCode: StatusCodes.OK, convert: RepositorySubscription.fromJSON);
290+
statusCode: StatusCodes.OK,
291+
convert: (i) => RepositorySubscription.fromJson(i));
290292

291293
/// Sets the Repository Subscription Status
292294
///
@@ -302,7 +304,7 @@ class ActivityService extends Service {
302304
return github.postJSON(
303305
'/repos/${slug.fullName}/subscription',
304306
statusCode: StatusCodes.OK,
305-
convert: RepositorySubscription.fromJSON,
307+
convert: (i) => RepositorySubscription.fromJson(i),
306308
body: jsonEncode(map),
307309
);
308310
}
@@ -354,7 +356,7 @@ class EventPoller {
354356

355357
if (!(onlyNew && _timer == null)) {
356358
for (final item in json) {
357-
final event = Event.fromJSON(item);
359+
final event = Event.fromJson(item);
358360

359361
if (after == null ? false : event.createdAt.toUtc().isBefore(after)) {
360362
continue;

lib/src/common/model/activity.dart

Lines changed: 13 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,40 @@
11
import 'package:github/src/common.dart';
22
import 'package:github/src/common/model/users.dart';
3-
import 'package:github/src/util.dart';
43
import 'package:json_annotation/json_annotation.dart';
54

5+
part 'activity.g.dart';
6+
67
/// Model class for an event.
8+
@JsonSerializable(createToJson: false)
79
class Event {
10+
Event();
11+
String id;
12+
String type;
813
Repository repo;
9-
1014
User actor;
11-
1215
Organization org;
16+
Map<String, dynamic> payload;
1317

1418
@JsonKey(name: 'created_at')
1519
DateTime createdAt;
1620

17-
String id;
18-
19-
String type;
20-
21-
Map<String, dynamic> json;
22-
23-
Map<String, dynamic> payload;
24-
25-
static Event fromJSON(Map<String, dynamic> input) {
26-
if (input == null) return null;
27-
28-
final event = Event();
29-
30-
event.json = input;
31-
32-
event.type = input['type'];
33-
34-
event
35-
..repo = Repository.fromJSON(input['repo'] as Map<String, dynamic>)
36-
..org = Organization.fromJSON(input['org'] as Map<String, dynamic>)
37-
..createdAt = parseDateTime(input['created_at'])
38-
..id = input['id']
39-
..actor = User.fromJson(input['actor'] as Map<String, dynamic>)
40-
..payload = input['payload'] as Map<String, dynamic>;
41-
42-
return event;
21+
factory Event.fromJson(Map<String, dynamic> input) {
22+
return _$EventFromJson(input);
4323
}
4424
}
4525

4626
/// Model class for a repository subscription.
27+
@JsonSerializable(createToJson: false)
4728
class RepositorySubscription {
29+
RepositorySubscription();
4830
bool subscribed;
4931
bool ignored;
5032
String reason;
5133

5234
@JsonKey(name: 'created_at')
5335
DateTime createdAt;
5436

55-
RepositorySubscription();
56-
57-
static RepositorySubscription fromJSON(Map<String, dynamic> input) {
58-
if (input == null) return null;
59-
60-
return RepositorySubscription()
61-
..subscribed = input['subscribed']
62-
..ignored = input['ignored']
63-
..reason = input['reason']
64-
..createdAt = parseDateTime(input['created_at']);
37+
factory RepositorySubscription.fromJson(Map<String, dynamic> input) {
38+
return _$RepositorySubscriptionFromJson(input);
6539
}
6640
}

lib/src/common/model/activity.g.dart

Lines changed: 37 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/common/model/notifications.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Notification {
2222
return Notification()
2323
..id = input['id']
2424
..repository =
25-
Repository.fromJSON(input['repository'] as Map<String, dynamic>)
25+
Repository.fromJson(input['repository'] as Map<String, dynamic>)
2626
..subject =
2727
NotificationSubject.fromJSON(input['subject'] as Map<String, dynamic>)
2828
..reason = input['reason']

lib/src/common/model/orgs.dart

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import 'package:json_annotation/json_annotation.dart';
55
part 'orgs.g.dart';
66

77
/// Model class for a GitHub organization.
8+
@JsonSerializable(createToJson: false)
89
class Organization {
10+
Organization();
11+
912
/// Organization Login
1013
String login;
1114

@@ -59,25 +62,8 @@ class Organization {
5962
@JsonKey(name: 'updated_at')
6063
DateTime updatedAt;
6164

62-
static Organization fromJSON(Map<String, dynamic> input) {
63-
if (input == null) return null;
64-
65-
return Organization()
66-
..login = input['login']
67-
..id = input['id']
68-
..htmlUrl = input['html_url']
69-
..avatarUrl = input['avatar_url']
70-
..name = input['name']
71-
..company = input['company']
72-
..createdAt = parseDateTime(input['created_at'])
73-
..updatedAt = parseDateTime(input['updated_at'])
74-
..publicGistsCount = input['public_gists']
75-
..publicReposCount = input['public_repos']
76-
..followersCount = input['followers']
77-
..followingCount = input['following']
78-
..email = input['email']
79-
..blog = input['blog']
80-
..location = input['location'];
65+
factory Organization.fromJson(Map<String, dynamic> input) {
66+
return _$OrganizationFromJson(input);
8167
}
8268
}
8369

@@ -91,7 +77,7 @@ class OrganizationMembership {
9177

9278
return OrganizationMembership()
9379
..organization =
94-
Organization.fromJSON(input['organization'] as Map<String, dynamic>)
80+
Organization.fromJson(input['organization'] as Map<String, dynamic>)
9581
..state = input['state'];
9682
}
9783
}
@@ -127,7 +113,7 @@ class Team {
127113
..membersCount = input['members_count']
128114
..reposCount = input['repos_count']
129115
..organization =
130-
Organization.fromJSON(input['organization'] as Map<String, dynamic>);
116+
Organization.fromJson(input['organization'] as Map<String, dynamic>);
131117
}
132118
}
133119

lib/src/common/model/orgs.g.dart

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/common/model/pulls.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ class PullRequestHead {
191191
head.ref = input['ref'];
192192
head.sha = input['sha'];
193193
head.user = User.fromJson(input['user'] as Map<String, dynamic>);
194-
head.repo = Repository.fromJSON(input['repo'] as Map<String, dynamic>);
194+
head.repo = Repository.fromJson(input['repo'] as Map<String, dynamic>);
195195
return head;
196196
}
197197
}

lib/src/common/model/repos.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ class GitHubComparison {
3838
/// Model class for a repository.
3939
@JsonSerializable(createToJson: false)
4040
class Repository {
41+
Repository();
42+
4143
/// Repository Name
4244
String name;
4345

@@ -132,8 +134,7 @@ class Repository {
132134

133135
LicenseKind license;
134136

135-
static Repository fromJSON(Map<String, dynamic> input) {
136-
if (input == null) return null;
137+
factory Repository.fromJson(Map<String, dynamic> input) {
137138
return _$RepositoryFromJson(input);
138139
}
139140

lib/src/common/model/repos_statuses.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class CombinedRepositoryStatus {
2424
.map((it) => RepositoryStatus.fromJSON(it))
2525
.toList()
2626
..repository =
27-
Repository.fromJSON(input['repository'] as Map<String, dynamic>);
27+
Repository.fromJson(input['repository'] as Map<String, dynamic>);
2828
}
2929
}
3030

lib/src/common/model/search.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ class CodeSearchItem {
4747
@JsonKey(name: 'html_url', fromJson: Uri.parse)
4848
Uri htmlUrl;
4949

50-
@JsonKey(fromJson: Repository.fromJSON)
5150
Repository repository;
5251

5352
static CodeSearchItem fromJson(Map<String, dynamic> input) {

0 commit comments

Comments
 (0)