Skip to content

Commit dba986d

Browse files
committed
refactor
1 parent 42700fa commit dba986d

20 files changed

+199
-285
lines changed

lib/domain/atom_category.dart

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,16 @@
11
import 'package:xml/xml.dart';
22

33
class AtomCategory {
4-
String term;
5-
String scheme;
6-
String label;
4+
final String term;
5+
final String scheme;
6+
final String label;
77

88
AtomCategory(this.term, this.scheme, this.label);
99

1010
factory AtomCategory.parse(XmlElement element) {
1111
var term = element.getAttribute("term");
1212
var scheme = element.getAttribute("scheme");
1313
var label = element.getAttribute("label");
14-
return new AtomCategory(term, scheme, label);
15-
}
16-
17-
@override
18-
String toString() {
19-
return '''
20-
term: $term
21-
scheme: $scheme
22-
label: $label
23-
''';
14+
return AtomCategory(term, scheme, label);
2415
}
2516
}

lib/domain/atom_feed.dart

Lines changed: 39 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@ import 'package:webfeed/util/helpers.dart';
77
import 'package:xml/xml.dart';
88

99
class AtomFeed {
10-
String id;
11-
String title;
12-
String updated;
13-
List<AtomItem> items;
10+
final String id;
11+
final String title;
12+
final String updated;
13+
final List<AtomItem> items;
1414

15-
List<AtomLink> links;
16-
List<AtomPerson> authors;
17-
List<AtomPerson> contributors;
18-
List<AtomCategory> categories;
19-
AtomGenerator generator;
20-
String icon;
21-
String logo;
22-
String rights;
23-
String subtitle;
15+
final List<AtomLink> links;
16+
final List<AtomPerson> authors;
17+
final List<AtomPerson> contributors;
18+
final List<AtomCategory> categories;
19+
final AtomGenerator generator;
20+
final String icon;
21+
final String logo;
22+
final String rights;
23+
final String subtitle;
2424

2525
AtomFeed({
2626
this.id,
@@ -46,73 +46,32 @@ class AtomFeed {
4646
} on StateError {
4747
throw new ArgumentError("feed not found");
4848
}
49-
var id = xmlGetString(feedElement, "id", strict: false);
50-
var title = xmlGetString(feedElement, "title", strict: false);
51-
var updated = xmlGetString(feedElement, "updated", strict: false);
5249

53-
var items = feedElement.findElements("entry").map((element) {
54-
return new AtomItem.parse(element);
55-
}).toList();
56-
57-
var links = feedElement.findElements("link").map((element) {
58-
return new AtomLink.parse(element);
59-
}).toList();
60-
61-
var authors = feedElement.findElements("author").map((element) {
62-
return new AtomPerson.parse(element);
63-
}).toList();
64-
65-
var contributors = feedElement.findElements("contributor").map((element) {
66-
return new AtomPerson.parse(element);
67-
}).toList();
68-
69-
var categories = feedElement.findElements("category").map((element) {
70-
return new AtomCategory.parse(element);
71-
}).toList();
72-
73-
AtomGenerator generator;
74-
try {
75-
generator =
76-
new AtomGenerator.parse(feedElement.findElements("generator").first);
77-
} on StateError {}
78-
79-
var icon = xmlGetString(feedElement, "icon", strict: false);
80-
var logo = xmlGetString(feedElement, "logo", strict: false);
81-
var rights = xmlGetString(feedElement, "rights", strict: false);
82-
var subtitle = xmlGetString(feedElement, "subtitle", strict: false);
83-
84-
return new AtomFeed(
85-
id: id,
86-
title: title,
87-
updated: updated,
88-
items: items,
89-
links: links,
90-
authors: authors,
91-
contributors: contributors,
92-
categories: categories,
93-
generator: generator,
94-
icon: icon,
95-
logo: logo,
96-
rights: rights,
97-
subtitle: subtitle);
98-
}
99-
100-
@override
101-
String toString() {
102-
return '''
103-
id: $id
104-
title: $title
105-
updated: $updated
106-
items: $items
107-
links: $links
108-
authors: $authors
109-
contributors: $contributors
110-
categories: $categories
111-
generator: $generator
112-
icon: $icon
113-
logo: $logo
114-
rights: $rights
115-
subtitle: $subtitle
116-
''';
50+
return AtomFeed(
51+
id: findElementOrNull(feedElement, "id")?.text,
52+
title: findElementOrNull(feedElement, "title")?.text,
53+
updated: findElementOrNull(feedElement, "updated")?.text,
54+
items: feedElement.findElements("entry").map((element) {
55+
return AtomItem.parse(element);
56+
}).toList(),
57+
links: feedElement.findElements("link").map((element) {
58+
return AtomLink.parse(element);
59+
}).toList(),
60+
authors: feedElement.findElements("author").map((element) {
61+
return AtomPerson.parse(element);
62+
}).toList(),
63+
contributors: feedElement.findElements("contributor").map((element) {
64+
return AtomPerson.parse(element);
65+
}).toList(),
66+
categories: feedElement.findElements("category").map((element) {
67+
return AtomCategory.parse(element);
68+
}).toList(),
69+
generator:
70+
AtomGenerator.parse(findElementOrNull(feedElement, "generator")),
71+
icon: findElementOrNull(feedElement, "icon")?.text,
72+
logo: findElementOrNull(feedElement, "logo")?.text,
73+
rights: findElementOrNull(feedElement, "rights")?.text,
74+
subtitle: findElementOrNull(feedElement, "subtitle")?.text,
75+
);
11776
}
11877
}

lib/domain/atom_generator.dart

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
11
import 'package:xml/xml.dart';
22

33
class AtomGenerator {
4-
String uri;
5-
String version;
6-
String value;
4+
final String uri;
5+
final String version;
6+
final String value;
77

88
AtomGenerator(this.uri, this.version, this.value);
99

1010
factory AtomGenerator.parse(XmlElement element) {
11+
if (element == null) {
12+
return null;
13+
}
1114
var uri = element.getAttribute("uri");
1215
var version = element.getAttribute("version");
1316
var value = element.text;
1417
return new AtomGenerator(uri, version, value);
1518
}
16-
17-
@override
18-
String toString() {
19-
return '''
20-
uri: $uri
21-
version: $version
22-
value: $value
23-
''';
24-
}
2519
}

lib/domain/atom_item.dart

Lines changed: 22 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -39,68 +39,28 @@ class AtomItem {
3939
});
4040

4141
factory AtomItem.parse(XmlElement element) {
42-
var id = xmlGetString(element, "id", strict: false);
43-
var title = xmlGetString(element, "title", strict: false);
44-
var updated = xmlGetString(element, "updated", strict: false);
45-
46-
var authors = element.findElements("author").map((element) {
47-
return new AtomPerson.parse(element);
48-
}).toList();
49-
50-
var links = element.findElements("link").map((element) {
51-
return new AtomLink.parse(element);
52-
}).toList();
53-
54-
var categories = element.findElements("category").map((element) {
55-
return new AtomCategory.parse(element);
56-
}).toList();
57-
58-
var contributors = element.findElements("contributor").map((element) {
59-
return new AtomPerson.parse(element);
60-
}).toList();
61-
62-
AtomSource source;
63-
try {
64-
source = new AtomSource.parse(element.findElements("source").first);
65-
} on StateError {}
66-
67-
var published = xmlGetString(element, "published", strict: false);
68-
var content = xmlGetString(element, "content", strict: false);
69-
var summary = xmlGetString(element, "summary", strict: false);
70-
var rights = xmlGetString(element, "rights", strict: false);
71-
72-
return new AtomItem(
73-
id: id,
74-
title: title,
75-
updated: updated,
76-
authors: authors,
77-
links: links,
78-
categories: categories,
79-
contributors: contributors,
80-
source: source,
81-
published: published,
82-
content: content,
83-
summary: summary,
84-
rights: rights,
85-
media: new Media.parse(element),
42+
return AtomItem(
43+
id: findElementOrNull(element, "id")?.text,
44+
title: findElementOrNull(element, "title")?.text,
45+
updated: findElementOrNull(element, "updated")?.text,
46+
authors: element.findElements("author").map((element) {
47+
return AtomPerson.parse(element);
48+
}).toList(),
49+
links: element.findElements("link").map((element) {
50+
return AtomLink.parse(element);
51+
}).toList(),
52+
categories: element.findElements("category").map((element) {
53+
return AtomCategory.parse(element);
54+
}).toList(),
55+
contributors: element.findElements("contributor").map((element) {
56+
return AtomPerson.parse(element);
57+
}).toList(),
58+
source: AtomSource.parse(findElementOrNull(element, "source")),
59+
published: findElementOrNull(element, "published")?.text,
60+
content: findElementOrNull(element, "content")?.text,
61+
summary: findElementOrNull(element, "summary")?.text,
62+
rights: findElementOrNull(element, "rights")?.text,
63+
media: Media.parse(element),
8664
);
8765
}
88-
89-
@override
90-
String toString() {
91-
return '''
92-
id: $id
93-
title: $title
94-
updated: $updated
95-
authors: $authors
96-
links: $links
97-
categories: $categories
98-
contributors: $contributors
99-
source: $source
100-
published: $published
101-
content: $content
102-
summary: $summary
103-
rights: $rights
104-
''';
105-
}
10666
}

lib/domain/atom_link.dart

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import 'package:xml/xml.dart';
22

33
class AtomLink {
4-
String href;
5-
String rel;
6-
String type;
7-
String hreflang;
8-
String title;
9-
int length;
4+
final String href;
5+
final String rel;
6+
final String type;
7+
final String hreflang;
8+
final String title;
9+
final int length;
1010

1111
AtomLink(
1212
this.href,
@@ -27,18 +27,6 @@ class AtomLink {
2727
if (element.getAttribute("length") != null) {
2828
length = int.parse(element.getAttribute("length"));
2929
}
30-
return new AtomLink(href, rel, type, hreflang, title, length);
31-
}
32-
33-
@override
34-
String toString() {
35-
return '''
36-
href: $href
37-
rel: $rel
38-
type: $type
39-
hreflang: $hreflang
40-
title: $title
41-
length: $length
42-
''';
30+
return AtomLink(href, rel, type, hreflang, title, length);
4331
}
4432
}

lib/domain/atom_person.dart

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,16 @@ import 'package:webfeed/util/helpers.dart';
22
import 'package:xml/xml.dart';
33

44
class AtomPerson {
5-
String name;
6-
String uri;
7-
String email;
5+
final String name;
6+
final String uri;
7+
final String email;
88

99
AtomPerson(this.name, this.uri, this.email);
1010

1111
factory AtomPerson.parse(XmlElement element) {
12-
var name = xmlGetString(element, "name");
13-
var uri = xmlGetString(element, "uri", strict: false);
14-
var email = xmlGetString(element, "email", strict: false);
15-
return new AtomPerson(name, uri, email);
16-
}
17-
18-
@override
19-
String toString() {
20-
return '''
21-
name: $name
22-
uri: $uri
23-
email: $email
24-
''';
12+
var name = findElementOrNull(element, "name")?.text;
13+
var uri = findElementOrNull(element, "uri")?.text;
14+
var email = findElementOrNull(element, "email")?.text;
15+
return AtomPerson(name, uri, email);
2516
}
2617
}

lib/domain/atom_source.dart

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,20 @@ import 'package:webfeed/util/helpers.dart';
22
import 'package:xml/xml.dart';
33

44
class AtomSource {
5-
String id;
6-
String title;
7-
String updated;
5+
final String id;
6+
final String title;
7+
final String updated;
88

99
AtomSource(this.id, this.title, this.updated);
1010

1111
factory AtomSource.parse(XmlElement element) {
12-
var id = xmlGetString(element, "id", strict: false);
13-
var title = xmlGetString(element, "title", strict: false);
14-
var updated = xmlGetString(element, "updated", strict: false);
12+
if (element == null) {
13+
return null;
14+
}
15+
var id = findElementOrNull(element, "id")?.text;
16+
var title = findElementOrNull(element, "title")?.text;
17+
var updated = findElementOrNull(element, "updated")?.text;
1518

16-
return new AtomSource(id, title, updated);
17-
}
18-
19-
@override
20-
String toString() {
21-
return '''
22-
id: $id
23-
title: $title
24-
updated: $updated
25-
''';
19+
return AtomSource(id, title, updated);
2620
}
2721
}

0 commit comments

Comments
 (0)