common/app/model/SupportedUrl.scala (25 lines of code) (raw):

package model import com.gu.contentapi.client.model.v1.{Content => ApiContent, Tag => ApiTag, Section => ApiSection} import model.pressed._ // NEVER FORGET - Just calling this SupportedUrl doesn't make it not UrlBuilder, y'know. object SupportedUrl { def apply(c: ApiContent): String = s"/${c.id}" def apply(t: ApiTag): String = s"/${t.id}" def apply(s: ApiSection): String = s"/${s.id}" def fromFaciaContent(fc: PressedContent): String = fc match { case curatedContent: CuratedContent => s"/${curatedContent.properties.webUrl .map(_.replaceFirst("^https?://www.theguardian.com/", "")) .orElse(curatedContent.properties.href) .getOrElse(curatedContent.card.id)}" case supportingCuratedContent: SupportingCuratedContent => s"/${supportingCuratedContent.properties.webUrl .map(_.replaceFirst("^https?://www.theguardian.com/", "")) .orElse(supportingCuratedContent.properties.href) .getOrElse(supportingCuratedContent.card.id)}" case linkSnap: LinkSnap => linkSnap.properties.href.getOrElse(linkSnap.card.id) case latestSnap: LatestSnap => latestSnap.properties.maybeContent .map(content => s"/${content.metadata.id}") .orElse(latestSnap.properties.href) .getOrElse(s"/${latestSnap.card.id}") } }