1+ <?php
2+ declare (strict_types = 1 );
3+
4+ namespace Forensic \FeedParser \Feeds ;
5+
6+ use Forensic \FeedParser \Enums \FeedTypes ;
7+ use Forensic \FeedParser \XPath ;
8+ use Forensic \FeedParser \FeedItems \ATOMFeedItem ;
9+
10+ class ATOMFeed extends BaseFeed
11+ {
12+ public function __construct (XPath $ xpath , string $ default_lang ,
13+ bool $ remove_styles , bool $ remove_scripts )
14+ {
15+ $ namespaces = [
16+ 'atom ' => 'http://www.w3.org/2005/Atom ' ,
17+ 'xml ' => 'http://www.w3.org/XML/1998/namespace '
18+ ];
19+
20+ $ property_selectors = [
21+ 'id ' => 'atom:id ' ,
22+ 'title ' => 'atom:title ' , // text construct
23+ 'link ' => 'atom:link[@rel="alternate"]/@href || atom:link/@href ' ,
24+ 'description ' => 'atom:subtitle ' , // text construct
25+ 'image ' => [
26+ 'src ' => 'atom:logo ' ,
27+ 'link ' => 'atom:link ' ,
28+ 'title ' => 'atom:title '
29+ ],
30+ 'copyright ' => 'atom:rights ' ,
31+ 'publisher ' => 'atom:contributor || atom:title ' ,
32+ 'lastUpdated ' => 'atom:updated ' ,
33+ 'creator ' => 'atom:generator ' ,
34+ 'language ' => '@xml:lang ' ,
35+ 'category ' => 'atom:category '
36+ ];
37+
38+ $ items_selector = 'atom:entry ' ;
39+
40+ parent ::__construct (
41+ new FeedTypes (FeedTypes::ATOM_FEED ),
42+ $ default_lang ,
43+ $ xpath ,
44+ $ namespaces ,
45+ $ property_selectors ,
46+ $ items_selector ,
47+ $ remove_styles ,
48+ $ remove_scripts
49+ );
50+ }
51+ }
0 commit comments