From 7b23e6cdbafc9acf9547d528316ff0f8327d939b Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 5 Sep 2021 22:29:17 +0200 Subject: [PATCH] convert game gifs to game embeds in ublog --- modules/common/src/main/Form.scala | 3 ++- modules/ublog/src/main/Env.scala | 3 ++- modules/ublog/src/main/UblogMarkup.scala | 13 +++++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/common/src/main/Form.scala b/modules/common/src/main/Form.scala index 4711d533db..7983b96add 100644 --- a/modules/common/src/main/Form.scala +++ b/modules/common/src/main/Form.scala @@ -132,7 +132,8 @@ object Form { "githubusercontent.com", "googleusercontent.com", "i.ibb.co", - "i.postimg.cc" + "i.postimg.cc", + "lichess1.org" ) private val imageDomainRegex = """^(?:https?://)([^/]+)/.{6,}""".r sealed abstract private class Bad(val msg: String) diff --git a/modules/ublog/src/main/Env.scala b/modules/ublog/src/main/Env.scala index 31f923eb5d..056eab88ac 100644 --- a/modules/ublog/src/main/Env.scala +++ b/modules/ublog/src/main/Env.scala @@ -14,7 +14,8 @@ final class Env( ircApi: lila.irc.IrcApi, relationApi: lila.relation.RelationApi, captcher: lila.hub.actors.Captcher, - cacheApi: lila.memo.CacheApi + cacheApi: lila.memo.CacheApi, + net: NetConfig )(implicit ec: scala.concurrent.ExecutionContext ) { diff --git a/modules/ublog/src/main/UblogMarkup.scala b/modules/ublog/src/main/UblogMarkup.scala index f6f32a8217..8064335aa7 100644 --- a/modules/ublog/src/main/UblogMarkup.scala +++ b/modules/ublog/src/main/UblogMarkup.scala @@ -2,8 +2,9 @@ package lila.ublog import scala.concurrent.duration._ import lila.common.Chronometer +import lila.common.config.NetConfig -final class UblogMarkup { +final class UblogMarkup(net: NetConfig) { private val renderer = new lila.common.Markdown( @@ -16,10 +17,18 @@ final class UblogMarkup { table = true ) + def apply(post: UblogPost): String = + cache.get(post.markdown, str => renderer(s"ublog:${post.id}")(replaceGameGifs(str))) + private val cache = lila.memo.CacheApi.scaffeineNoScheduler .expireAfterAccess(20 minutes) .maximumSize(1024) .build[String, String]() - def apply(post: UblogPost): String = cache.get(post.markdown, renderer(s"ublog:${post.id}")) + private object replaceGameGifs { + val regex = { + """!\[[^\]]*\]\(""" + net.assetBaseUrl + """/game/export/gif/(white|black)/(\w{8}).gif\)""" + }.r + def apply(markdown: String) = regex.replaceAllIn(markdown, net.baseUrl.value + "/$2/$1") + } }