in app/com/gu/itunes/iTunesRssFeed.scala [52:118]
def toXml(tag: Tag, contents: List[Content], adFree: Boolean, imageResizerSalt: Option[String]): Node Or Failed = {
val description = Filtering.description(tag.description.getOrElse(""))
tag.podcast match {
case Some(podcast) => Good {
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
<channel>
{
if (!adFree) {
<itunes:new-feed-url>{ s"${tag.webUrl}/podcast.xml" }</itunes:new-feed-url>
}
}
<title>{ tag.webTitle }</title>
<link>{ tag.webUrl }</link>
<description>{ description }</description>
<language>en-gb</language>
<copyright>{ podcast.copyright }</copyright>
<lastBuildDate>
{ DateSupport.toRssTimeFormat(DateTime.now) }
</lastBuildDate>
<ttl>15</ttl>
{
podcast.podcastType match {
case Some(value) => <itunes:type>{ value }</itunes:type>
case None =>
}
}
<itunes:owner>
<itunes:email>userhelp@theguardian.com</itunes:email>
<itunes:name>{ author }</itunes:name>
</itunes:owner>
<itunes:image href={ podcast.image.getOrElse("") }/>
<itunes:author>{ author }</itunes:author>
{
if (podcast.explicit)
<itunes:explicit>yes</itunes:explicit>
}
<itunes:keywords/>
<itunes:summary>{ description }</itunes:summary>
<image>
<title>{ tag.webTitle }</title>
<url>{ podcast.image.getOrElse("https://static.guim.co.uk/sitecrumbs/Guardian.gif") }</url>
<link>{ tag.webUrl }</link>
</image>
{
if (adFree) {
<itunes:block>yes</itunes:block>
}
}
{
for (category <- podcast.categories.getOrElse(Nil)) yield new CategoryRss(category).toXml
}
{
for {
podcastContent <- contents
asset <- getFirstAudioAsset(podcastContent)
} yield new iTunesRssItem(podcastContent, tag.id, asset, adFree, podcast.podcastType, imageResizerSalt).toXml
}
</channel>
</rss>
}
case None => Bad {
Failed("podcast not found", NotFound)
}
}
}