@@ -4,62 +4,66 @@ import 'package:webfeed/util/helpers.dart';
4
4
5
5
import 'rss_itunes_category.dart' ;
6
6
import 'rss_itunes_image.dart' ;
7
+ import 'rss_itunes_owner.dart' ;
8
+ import 'rss_itunes_type.dart' ;
7
9
8
10
class RssItunes {
9
11
final String author;
10
12
final String summary;
11
13
final bool explicit;
14
+ final String title;
12
15
final String subtitle;
13
16
final RssItunesOwner owner;
14
17
final List <String > keywords;
15
18
final RssItunesImage image;
16
- final RssItunesCategory category;
19
+ final List <RssItunesCategory > categories;
20
+ final RssItunesType type;
21
+ final String newFeedUrl;
22
+ final bool block;
23
+ final bool complete;
17
24
18
25
RssItunes ({
19
26
this .author,
20
27
this .summary,
21
28
this .explicit,
29
+ this .title,
22
30
this .subtitle,
23
31
this .owner,
24
32
this .keywords,
25
33
this .image,
26
- this .category,
34
+ this .categories,
35
+ this .type,
36
+ this .newFeedUrl,
37
+ this .block,
38
+ this .complete,
27
39
});
28
40
29
41
factory RssItunes .parse (XmlElement element) {
30
42
if (element == null ) {
31
43
return null ;
32
44
}
33
- var explicitStr =
34
- findElementOrNull (element, "itunes:explicit" )? .text? .toLowerCase ()? .trim ();
35
-
36
45
return RssItunes (
37
46
author: findElementOrNull (element, "itunes:author" )? .text? .trim (),
38
47
summary: findElementOrNull (element, "itunes:summary" )? .text? .trim (),
39
- explicit: explicitStr == null
40
- ? null
41
- : explicitStr == "yes" || explicitStr == "true" ,
48
+ explicit: parseBoolLiteral (element, "itunes:explicit" ),
49
+ title: findElementOrNull (element, "itunes:title" )? .text? .trim (),
42
50
subtitle: findElementOrNull (element, "itunes:subtitle" )? .text? .trim (),
43
51
owner: RssItunesOwner .parse (findElementOrNull (element, "itunes:owner" )),
44
- keywords: findElementOrNull (element, "itunes:keywords" )? .text? .split ("," )? .map ((keyword) => keyword.trim ())? .toList (),
52
+ keywords: findElementOrNull (element, "itunes:keywords" )
53
+ ? .text
54
+ ? .split ("," )
55
+ ? .map ((keyword) => keyword.trim ())
56
+ ? .toList (),
45
57
image: RssItunesImage .parse (findElementOrNull (element, "itunes:image" )),
46
- category: RssItunesCategory .parse (
47
- findElementOrNull (element, "itunes:category" )),
58
+ categories: findAllDirectElementsOrNull (element, "itunes:category" )
59
+ .map ((ele) => RssItunesCategory .parse (ele))
60
+ .toList (),
61
+ type: newRssItunesType (findElementOrNull (element, "itunes:type" )),
62
+ newFeedUrl:
63
+ findElementOrNull (element, "itunes:new-feed-url" )? .text? .trim (),
64
+ block: parseBoolLiteral (element, "itunes:block" ),
65
+ complete: parseBoolLiteral (element, "itunes:complete" ),
48
66
);
49
67
}
50
68
}
51
69
52
- class RssItunesOwner {
53
- final String name;
54
- final String email;
55
-
56
- RssItunesOwner ({this .name, this .email});
57
-
58
- factory RssItunesOwner .parse (XmlElement element) {
59
- if (element == null ) return null ;
60
- return RssItunesOwner (
61
- name: findElementOrNull (element, "itunes:name" )? .text? .trim (),
62
- email: findElementOrNull (element, "itunes:email" )? .text? .trim (),
63
- );
64
- }
65
- }
0 commit comments