// Ċ // ĠMIT ĠLicense Ċ // Ċ // ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ċ // Ċ // ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ // Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ // Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ // Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ // Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ // Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ // Ċ // ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ // Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ // Ċ // ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ // ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ // ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ // ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ // ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ // ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ // ĠSOFTWARE . Ċ // Ċ package Ġcom . github . jon for short . rss reader . feed content fetcher Ċ Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Feature Ċ import Ġcom . fasterxml . jackson . data format . xml . Xml Mapper Ċ import Ġcom . github . jon for short . rss reader . feed content fetcher . model . R ss Version Ċ import Ġcom . github . jon for short . rss reader . feed content fetcher . utils . convert Date StringTo TimeIn Ms Ċ import Ġcom . github . jon for short . rss reader . feed content fetcher . model . rs st wo . R ss Ġas ĠR ss Two Ċ Ċ internal Ġclass ĠR ss Parser Ġ{ ĊĊĠĠĠ Ġfun Ġparse ( rss Content : ĠString ): ĠFeed Content Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr ss Ġ= Ġcreate Xml Mapper (). readValue ( rss Content , ĠR ss Version :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( rss . version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 . 0 " Ġ-> Ġparse R ss Two ( rss Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" invalid Ġversion Ġfor Ġr ss Ġcontent ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse R ss Two ( rss Content : ĠString ): ĠFeed Content Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr ss Ġ= Ġcreate Xml Mapper (). readValue ( rss Content , ĠR ss Two :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġr ss . channel !! ĊĠĠĠĠĠĠĠ Ġreturn ĠFeed Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġ" 2 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserialized Ġ= Ġr ss Content , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Ġ= ĠFeed Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . link , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . item . map Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġitem . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Ġ= Ġitem . link , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġitem . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublish Date Ġ= Ġitem . pub Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublish TimeIn Ms Ġ= Ġconvert Date StringTo TimeIn Ms ( item . pub Date ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġitem . source , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġen closure Ġ= Ġitem . enc lo sure . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Item En closure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . length InBytes ?. toInt () Ġ?: Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . mime Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Content Ġ= ĠFeed Item Media Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . media Content . url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Xml Mapper () Ġ= ĊĠĠĠĠĠĠĠ ĠXml Mapper (). disable ( Deserialization Feature . FAIL _ ON _ UNKNOWN _ PROPERTIES ) Ċ } Ċ