@@ -7,20 +7,20 @@ import 'package:webfeed/util/helpers.dart';
7
7
import 'package:xml/xml.dart' ;
8
8
9
9
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;
14
14
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;
24
24
25
25
AtomFeed ({
26
26
this .id,
@@ -46,73 +46,32 @@ class AtomFeed {
46
46
} on StateError {
47
47
throw new ArgumentError ("feed not found" );
48
48
}
49
- var id = xmlGetString (feedElement, "id" , strict: false );
50
- var title = xmlGetString (feedElement, "title" , strict: false );
51
- var updated = xmlGetString (feedElement, "updated" , strict: false );
52
49
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
+ );
117
76
}
118
77
}
0 commit comments