add support for imgur URLs

pull/3523/head
Thibault Duplessis 2017-08-25 08:45:04 -05:00
parent 22e5e12806
commit 1aac0973fc
2 changed files with 22 additions and 5 deletions

View File

@ -118,12 +118,15 @@ object String {
}
private val imgUrlPattern = """.*\.(jpg|jpeg|png|gif)$""".r.pattern
private val imgurRegex = """https?://imgur\.com/(\w+)""".r
private def urlToImgUnsafe(url: String): Option[String] = {
imgUrlPattern.matcher(url).matches && !url.contains(s"://$netDomain")
} option s"""<img class="embed" src="$url"/>"""
private def urlToImgUnsafe(url: String): Option[String] = (url match {
case imgurRegex(id) => s"""https://i.imgur.com/$id.jpg""".some
case u if imgUrlPattern.matcher(url).matches && !url.contains(s"://$netDomain") => u.some
case _ => none
}) map { imgUrl => s"""<img class="embed" src="$imgUrl"/>""" }
private def urlOrImgUnsafe(url: String) = urlToImgUnsafe(url) getOrElse url
private def urlOrImgUnsafe(url: String): String = urlToImgUnsafe(url) getOrElse url
// from https://github.com/android/platform_frameworks_base/blob/d59921149bb5948ffbcb9a9e832e9ac1538e05a0/core/java/android/text/TextUtils.java#L1361
def escapeHtml(s: String): Html = Html(escapeHtmlUnsafe(s))

View File

@ -17,10 +17,24 @@ class HtmlTest extends Specification {
"detect image" in {
val url = "http://zombo.com/pic.jpg"
addLinks(s"""img to $url here""") must_== Html {
val img = s"""<img src="$url" width="100%" style="max-width:100%" />"""
val img = s"""<img class="embed" src="$url"/>"""
s"""img to <a rel="nofollow" href="$url" target="_blank">$img</a> here"""
}
}
"detect imgur image URL" in {
val url = "https://imgur.com/NXy19Im"
val picUrl = "https://i.imgur.com/NXy19Im.jpg"
addLinks(s"""img to $url here""") must_== Html {
val img = s"""<img class="embed" src="$picUrl"/>"""
s"""img to <a rel="nofollow" href="$url" target="_blank">$img</a> here"""
}
}
"ignore imgur gallery URL" in {
val url = "https://imgur.com/gallery/pMtTE"
addLinks(s"""link to $url here""") must_== Html {
s"""link to <a rel="nofollow" href="$url" target="_blank">$url</a> here"""
}
}
// "skip markdown images" in {
// val url = "http://zombo.com"
// addLinks(s"""img of ![some alt]($url) here""") must_== Html {