validate prismic IDs
parent
3367eec955
commit
18b8fedcb1
|
@ -18,15 +18,16 @@ final class Prismic(
|
||||||
}
|
}
|
||||||
|
|
||||||
private def getDocument(id: String): Fu[Option[Document]] =
|
private def getDocument(id: String): Fu[Option[Document]] =
|
||||||
prismicApi flatMap { api =>
|
lila.blog.BlogApi.looksLikePrismicId(id) ??
|
||||||
api
|
prismicApi.flatMap { api =>
|
||||||
.forms("everything")
|
api
|
||||||
.query(s"""[[:d = at(document.id, "$id")]]""")
|
.forms("everything")
|
||||||
.ref(api.master.ref)
|
.query(s"""[[:d = at(document.id, "$id")]]""")
|
||||||
.submit() dmap {
|
.ref(api.master.ref)
|
||||||
_.results.headOption
|
.submit() dmap {
|
||||||
|
_.results.headOption
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
def getBookmark(name: String) =
|
def getBookmark(name: String) =
|
||||||
prismicApi flatMap { api =>
|
prismicApi flatMap { api =>
|
||||||
|
|
|
@ -11,6 +11,8 @@ final class BlogApi(
|
||||||
config: BlogConfig
|
config: BlogConfig
|
||||||
)(implicit ec: scala.concurrent.ExecutionContext, ws: StandaloneWSClient) {
|
)(implicit ec: scala.concurrent.ExecutionContext, ws: StandaloneWSClient) {
|
||||||
|
|
||||||
|
import BlogApi.looksLikePrismicId
|
||||||
|
|
||||||
private def collection = config.collection
|
private def collection = config.collection
|
||||||
|
|
||||||
def recent(
|
def recent(
|
||||||
|
@ -37,7 +39,7 @@ final class BlogApi(
|
||||||
recent(prismic.api, page, maxPerPage, prismic.ref.some)
|
recent(prismic.api, page, maxPerPage, prismic.ref.some)
|
||||||
|
|
||||||
def one(api: Api, ref: Option[String], id: String): Fu[Option[Document]] =
|
def one(api: Api, ref: Option[String], id: String): Fu[Option[Document]] =
|
||||||
api
|
looksLikePrismicId(id) ?? api
|
||||||
.forms(collection)
|
.forms(collection)
|
||||||
.query(s"""[[:d = at(document.id, "$id")]]""")
|
.query(s"""[[:d = at(document.id, "$id")]]""")
|
||||||
.ref(ref | api.master.ref)
|
.ref(ref | api.master.ref)
|
||||||
|
@ -112,4 +114,8 @@ object BlogApi {
|
||||||
case class Context(api: Api, ref: String, linkResolver: DocumentLinkResolver) {
|
case class Context(api: Api, ref: String, linkResolver: DocumentLinkResolver) {
|
||||||
def maybeRef = Option(ref).filterNot(_ == api.master.ref)
|
def maybeRef = Option(ref).filterNot(_ == api.master.ref)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val idRegex = """^[\w-]{16}$""".r
|
||||||
|
|
||||||
|
def looksLikePrismicId(id: String) = idRegex.matches(id)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue