refactor json form error result
This commit is contained in:
parent
5d476de857
commit
a5053e2d41
|
@ -81,7 +81,7 @@ object Auth extends LilaController {
|
|||
api.usernameForm.bindFromRequest.fold(
|
||||
err => negotiate(
|
||||
html = Unauthorized(html.auth.login(api.loginForm, referrer)).fuccess,
|
||||
api = _ => Unauthorized(errorsAsJson(err)).fuccess
|
||||
api = _ => jsonFormError(err)
|
||||
),
|
||||
username => HasherRateLimit(username, ctx.req) { chargeIpLimiter =>
|
||||
api.loadLoginForm(username) flatMap { loginForm =>
|
||||
|
@ -95,7 +95,7 @@ object Auth extends LilaController {
|
|||
case _ => Unauthorized(html.auth.login(err, referrer))
|
||||
}
|
||||
},
|
||||
api = _ => Unauthorized(errorsAsJson(err)).fuccess
|
||||
api = _ => jsonFormError(err)
|
||||
)
|
||||
},
|
||||
result => result.toOption match {
|
||||
|
@ -214,7 +214,7 @@ object Auth extends LilaController {
|
|||
api = apiVersion => forms.signup.mobile.bindFromRequest.fold(
|
||||
err => {
|
||||
err("username").value foreach { authLog(_, s"Signup fail: ${err.errors mkString ", "}") }
|
||||
fuccess(BadRequest(jsonError(errorsAsJson(err))))
|
||||
jsonFormError(err)
|
||||
},
|
||||
data => HasherRateLimit(data.username, ctx.req) { _ =>
|
||||
val email = env.emailAddressValidator.validate(data.realEmail) err s"Invalid email ${data.email}"
|
||||
|
|
|
@ -34,7 +34,7 @@ object Bot extends LilaController {
|
|||
}
|
||||
case Array("game", id, "chat") => WithBot(me) {
|
||||
Env.bot.form.chat.bindFromRequest.fold(
|
||||
err => BadRequest(errorsAsJson(err)).fuccess,
|
||||
jsonFormError,
|
||||
res => WithMyBotGame(id, me) { pov =>
|
||||
Env.bot.player.chat(pov.gameId, me, res) inject jsonOkResult
|
||||
}
|
||||
|
|
|
@ -466,7 +466,7 @@ private[controllers] trait LilaController
|
|||
) andThen (__ \ "").json.prune
|
||||
}
|
||||
|
||||
protected def errorsAsJson(form: play.api.data.Form[_])(implicit lang: play.api.i18n.Lang) = {
|
||||
protected def errorsAsJson(form: Form[_])(implicit lang: play.api.i18n.Lang) = {
|
||||
val json = Json.toJson(
|
||||
form.errors.groupBy(_.key).mapValues { errors =>
|
||||
errors.map(e => lila.i18n.Translator.txt.literal(e.message, lila.i18n.I18nDb.Site, e.args, lang))
|
||||
|
@ -475,6 +475,9 @@ private[controllers] trait LilaController
|
|||
json validate jsonGlobalErrorRenamer getOrElse json
|
||||
}
|
||||
|
||||
protected def jsonFormError(err: Form[_])(implicit lang: play.api.i18n.Lang) =
|
||||
fuccess(BadRequest(errorsAsJson(err)))
|
||||
|
||||
protected def pageHit(implicit ctx: lila.api.Context) =
|
||||
if (HTTPRequest isHuman ctx.req) lila.mon.http.request.path(ctx.req.path)()
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ object Message extends LilaController {
|
|||
}
|
||||
),
|
||||
api = _ => forms.thread(me).bindFromRequest.fold(
|
||||
err => fuccess(BadRequest(errorsAsJson(err))),
|
||||
jsonFormError,
|
||||
data => api.makeThread(data, me) map { thread =>
|
||||
Ok(Json.obj("ok" -> true, "id" -> thread.id))
|
||||
}
|
||||
|
|
|
@ -98,7 +98,7 @@ object Puzzle extends LilaController {
|
|||
if (puzzle.mate) lila.mon.puzzle.round.mate()
|
||||
else lila.mon.puzzle.round.material()
|
||||
env.forms.round.bindFromRequest.fold(
|
||||
err => fuccess(BadRequest(errorsAsJson(err))),
|
||||
jsonFormError,
|
||||
resultInt => {
|
||||
val result = Result(resultInt == 1)
|
||||
ctx.me match {
|
||||
|
@ -134,7 +134,7 @@ object Puzzle extends LilaController {
|
|||
if (puzzle.mate) lila.mon.puzzle.round.mate()
|
||||
else lila.mon.puzzle.round.material()
|
||||
env.forms.round.bindFromRequest.fold(
|
||||
err => fuccess(BadRequest(errorsAsJson(err))),
|
||||
jsonFormError,
|
||||
resultInt => ctx.me match {
|
||||
case Some(me) => for {
|
||||
(round, mode) <- env.finisher(
|
||||
|
@ -168,7 +168,7 @@ object Puzzle extends LilaController {
|
|||
NoBot {
|
||||
implicit val req = ctx.body
|
||||
env.forms.vote.bindFromRequest.fold(
|
||||
err => fuccess(BadRequest(errorsAsJson(err))),
|
||||
jsonFormError,
|
||||
vote => env.api.vote.find(id, me) flatMap {
|
||||
v => env.api.vote.update(id, me, v, vote == 1)
|
||||
} map {
|
||||
|
|
|
@ -63,9 +63,9 @@ object Setup extends LilaController with TheftPrevention {
|
|||
implicit val req = ctx.body
|
||||
PostRateLimit(HTTPRequest lastRemoteAddress ctx.req) {
|
||||
env.forms.friend(ctx).bindFromRequest.fold(
|
||||
f => negotiate(
|
||||
err => negotiate(
|
||||
html = Lobby.renderHome(Results.BadRequest),
|
||||
api = _ => fuccess(BadRequest(errorsAsJson(f)))
|
||||
api = _ => jsonFormError(err)
|
||||
), {
|
||||
case config => userId ?? UserRepo.byId flatMap { destUser =>
|
||||
destUser ?? { Env.challenge.granter(ctx.me, _, config.perfType) } flatMap {
|
||||
|
@ -138,10 +138,7 @@ object Setup extends LilaController with TheftPrevention {
|
|||
PostRateLimit(HTTPRequest lastRemoteAddress ctx.req) {
|
||||
NoPlaybanOrCurrent {
|
||||
env.forms.hook(ctx).bindFromRequest.fold(
|
||||
err => negotiate(
|
||||
html = BadRequest(errorsAsJson(err).toString).fuccess,
|
||||
api = _ => BadRequest(errorsAsJson(err)).fuccess
|
||||
),
|
||||
jsonFormError,
|
||||
config =>
|
||||
if (getBool("pool")) env.processor.saveHookConfig(config) inject hookSaveOnlyResponse
|
||||
else (ctx.userId ?? Env.relation.api.fetchBlocking) flatMap {
|
||||
|
@ -200,9 +197,9 @@ object Setup extends LilaController with TheftPrevention {
|
|||
PostRateLimit(HTTPRequest lastRemoteAddress ctx.req) {
|
||||
implicit val req = ctx.body
|
||||
form(ctx).bindFromRequest.fold(
|
||||
f => negotiate(
|
||||
err => negotiate(
|
||||
html = Lobby.renderHome(Results.BadRequest),
|
||||
api = _ => fuccess(BadRequest(errorsAsJson(f)))
|
||||
api = _ => jsonFormError(err)
|
||||
),
|
||||
config => op(config)(ctx) flatMap { pov =>
|
||||
negotiate(
|
||||
|
|
|
@ -272,7 +272,7 @@ object Study extends LilaController {
|
|||
def importPgn(id: String) = AuthBody { implicit ctx => me =>
|
||||
implicit val req = ctx.body
|
||||
lila.study.DataForm.importPgn.form.bindFromRequest.fold(
|
||||
err => BadRequest(errorsAsJson(err)).fuccess,
|
||||
jsonFormError,
|
||||
data => env.api.importPgns(me, StudyModel.Id(id), data.toChapterDatas, sticky = data.sticky)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -253,7 +253,7 @@ object Tournament extends LilaController {
|
|||
|
||||
private def doApiCreate(me: lila.user.User)(implicit req: Request[_]): Fu[Result] =
|
||||
env.forms(me).bindFromRequest.fold(
|
||||
err => BadRequest(errorsAsJson(err)).fuccess,
|
||||
jsonFormError,
|
||||
setup => teamsIBelongTo(me) flatMap { teams =>
|
||||
env.api.createTournament(setup, me, teams, getUserTeamIds) flatMap { tour =>
|
||||
Env.tournament.jsonView(tour, none, none, getUserTeamIds, none, none, lila.i18n.defaultLang)
|
||||
|
|
|
@ -282,7 +282,7 @@ object User extends LilaController {
|
|||
|
||||
def apiWriteNote(username: String) = ScopedBody() { implicit req => me =>
|
||||
doWriteNote(username, me)(
|
||||
err = err => _ => fuccess(BadRequest(errorsAsJson(err))),
|
||||
err = err => _ => jsonFormError(err),
|
||||
suc = jsonOkResult
|
||||
)
|
||||
}
|
||||
|
|
|
@ -105,7 +105,7 @@ object UserAnalysis extends LilaController with TheftPrevention {
|
|||
def pgn = OpenBody { implicit ctx =>
|
||||
implicit val req = ctx.body
|
||||
Env.importer.forms.importForm.bindFromRequest.fold(
|
||||
failure => BadRequest(errorsAsJson(failure)).fuccess,
|
||||
jsonFormError,
|
||||
data => Env.importer.importer.inMemory(data).fold(
|
||||
err => BadRequest(jsonError(err.shows)).fuccess, {
|
||||
case (game, fen) =>
|
||||
|
|
Loading…
Reference in a new issue