lila/app/controllers/Api.scala

64 lines
1.5 KiB
Scala
Raw Normal View History

2013-12-30 19:00:56 -07:00
package controllers
2014-01-07 18:43:20 -07:00
import play.api.libs.json.JsValue
2013-12-30 19:00:56 -07:00
import play.api.mvc._, Results._
import lila.app._
object Api extends LilaController {
2014-01-07 18:43:20 -07:00
private val userApi = Env.api.userApi
private val gameApi = Env.api.gameApi
2014-01-27 15:20:08 -07:00
private val analysisApi = Env.api.analysisApi
2014-04-17 02:34:48 -06:00
private val puzzleApi = Env.api.puzzleApi
2014-01-07 18:43:20 -07:00
2014-02-17 02:12:19 -07:00
def user(username: String) = ApiResult { req =>
2014-01-07 18:43:20 -07:00
userApi.one(
username = username,
token = get("token", req))
2013-12-30 19:00:56 -07:00
}
2014-01-07 18:43:20 -07:00
2014-02-17 02:12:19 -07:00
def users = ApiResult { req =>
2014-01-08 17:06:20 -07:00
userApi.list(
team = get("team", req),
2014-01-10 17:31:57 -07:00
engine = get("engine", req) map ("1"==),
2014-01-08 17:06:20 -07:00
token = get("token", req),
nb = getInt("nb", req)
) map (_.some)
}
2014-02-17 02:12:19 -07:00
def games = ApiResult { req =>
2014-01-07 18:43:20 -07:00
gameApi.list(
username = get("username", req),
rated = get("rated", req) map ("1"==),
token = get("token", req),
nb = getInt("nb", req)
) map (_.some)
2013-12-30 19:00:56 -07:00
}
2014-02-17 02:12:19 -07:00
def analysis = ApiResult { req =>
2014-01-27 15:20:08 -07:00
analysisApi.list(
2014-05-06 07:08:24 -06:00
nb = getInt("nb", req),
token = get("token", req)
2014-01-27 15:20:08 -07:00
) map (_.some)
}
2014-04-17 02:34:48 -06:00
def puzzle(id: String) = ApiResult { req =>
(id, parseIntOption(id)) match {
case ("daily", _) => puzzleApi.daily
case (_, Some(i)) => puzzleApi one i
case _ => fuccess(none)
}
}
2014-02-17 02:12:19 -07:00
private def ApiResult(js: RequestHeader => Fu[Option[JsValue]]) = Action async { req =>
2014-01-07 18:43:20 -07:00
js(req) map {
2014-02-17 02:12:19 -07:00
case None => NotFound
case Some(json) => get("callback", req) match {
case None => Ok(json) as JSON
case Some(callback) => Ok(s"$callback($json)") as JAVASCRIPT
2013-12-31 03:45:37 -07:00
}
2013-12-30 19:00:56 -07:00
}
}
}