in fapi-client/src/main/scala/com/gu/facia/api/utils/FaciaContentUtils.scala [20:123]
def maybeContent(fc: FaciaContent): Option[Content] = fold(fc)(
curatedContent => Option(curatedContent.content),
supportingCuratedContent => Option(supportingCuratedContent.content),
linkSnap => None,
latestSnap => latestSnap.latestContent)
def tags(fc: FaciaContent): List[com.gu.contentapi.client.model.v1.Tag] =
maybeContent(fc).map(_.tags.toList).getOrElse(Nil)
def webPublicationDateOption(fc: FaciaContent): Option[DateTime] = fold(fc)(
curatedContent => curatedContent.content.webPublicationDate,
supportingCuratedContent => supportingCuratedContent.content.webPublicationDate,
_ => None,
latestSnap => latestSnap.latestContent.flatMap(_.webPublicationDate)).map(_.toJodaDateTime)
def webPublicationDate(fc: FaciaContent): DateTime = webPublicationDateOption(fc).getOrElse(DateTime.now)
def id(fc: FaciaContent): String = fold(fc)(
curatedContent => curatedContent.content.id,
supportingCuratedContent => supportingCuratedContent.content.id,
linkSnap => linkSnap.id,
latestSnap => latestSnap.id)
def maybeContentId(fc: FaciaContent): Option[String] = fold(fc)(
curatedContent => Option(curatedContent.content.id),
supportingCuratedContent => Option(supportingCuratedContent.content.id),
linkSnap => None,
latestSnap => latestSnap.latestContent.map(_.id))
def group(fc: FaciaContent): String = fold(fc)(
curatedContent => curatedContent.group,
supportingCuratedContent => supportingCuratedContent.group,
linkSnap => linkSnap.group,
latestSnap => latestSnap.group)
def embedType(fc: FaciaContent): Option[String] = fold(fc)(
curatedContent => curatedContent.embedType,
supportingCuratedContent => None,
linkSnap => Option(linkSnap.snapType),
latestSnap => Option("latest"))
def embedCss(fc: FaciaContent): Option[String] = fold(fc)(
curatedContent => curatedContent.embedCss,
supportingCuratedContent => None,
linkSnap => linkSnap.snapCss,
latestSnap => latestSnap.snapCss)
def embedUri(fc: FaciaContent): Option[String] = fold(fc)(
curatedContent => curatedContent.embedUri,
supportingCuratedContent => None,
linkSnap => linkSnap.snapUri,
latestSnap => latestSnap.snapUri)
def itemKicker(fc: FaciaContent): Option[ItemKicker] =
fold(fc)(
curatedContent => curatedContent.kicker,
supportingCuratedContent => supportingCuratedContent.kicker,
linkSnap => linkSnap.kicker,
latestSnap => latestSnap.kicker)
def headlineOption(fc: FaciaContent): Option[String] = fold(fc)(
curatedContent => Option(curatedContent.headline),
supportingCuratedContent => Option(supportingCuratedContent.headline),
linkSnap => linkSnap.headline,
latestSnap => latestSnap.headline)
def headline(fc: FaciaContent): String = headlineOption(fc).getOrElse("Missing Headline")
def standfirst(fc: FaciaContent): Option[String] = fieldsGet(fc)(_.flatMap(_.standfirst))
def body(fc: FaciaContent): Option[String] = fieldsGet(fc)(_.flatMap(_.body))
def webUrl(fc: FaciaContent): Option[String] = fold(fc)(
curatedContent => Option(curatedContent.content.webUrl),
supportingCuratedContent => Option(supportingCuratedContent.content.webUrl),
linkSnap => linkSnap.snapUri,
latestSnap => latestSnap.latestContent.map(_.webUrl))
val DefaultSnapHref: String = "/"
def href(fc: FaciaContent): Option[String] = fold(fc)(
curatedContent => curatedContent.href,
supportingCuratedContent => supportingCuratedContent.href,
linkSnap => linkSnap.href.orElse(linkSnap.snapUri),
latestSnap => latestSnap.href.orElse(latestSnap.snapUri))
def atomId(fc: FaciaContent): Option[String] = fold(fc)(
curatedContent => None,
supportingCuratedContent => None,
linkSnap => linkSnap.atomId,
latestSnap => None
)
def mediaType(fc: FaciaContent): Option[MediaType] = {
def mediaTypeFromContent(content: Content): Option[MediaType] =
if (isGallery(fc)) Option(Gallery)
else if (isAudio(fc)) Option(Audio)
else if (isVideo(fc)) Option(Video)
else None
fold(fc)(
curatedContent => mediaTypeFromContent(curatedContent.content),
supportingCuratedContent => mediaTypeFromContent(supportingCuratedContent.content),
linkSnap => None,
latestSnap => latestSnap.latestContent.flatMap(mediaTypeFromContent))}