/api/user/me API endpoint

This commit is contained in:
Thibault Duplessis 2018-02-03 16:40:03 -05:00
parent 7d322e75af
commit 993160ed0f
4 changed files with 13 additions and 2 deletions

View file

@ -42,7 +42,11 @@ object Api extends LilaController {
}
def user(name: String) = ApiRequest { implicit ctx =>
userApi one name map toApiResult
userApi.one(name, isAuth = ctx.me.exists(_ is name)) map toApiResult
}
def me = ApiRequestAuth { implicit ctx => me =>
userApi.one(me.id, isAuth = true) map toApiResult
}
private val UsersRateLimitGlobal = new lila.memo.RateLimit[String](
@ -299,6 +303,10 @@ object Api extends LilaController {
js(ctx) map toHttp
}
def ApiRequestAuth(js: Context => lila.user.User => Fu[ApiResult]) = Auth { implicit ctx => me =>
js(ctx)(me) map toHttp
}
private val tooManyRequests = TooManyRequest(jsonError("Try again later"))
private def toHttp(result: ApiResult)(implicit ctx: Context): Result = result match {

View file

@ -501,6 +501,7 @@ GET /stat/rating/distribution/:perf controllers.Stat.ratingDistribution(perf:
# API
GET /api/user controllers.Api.users
POST /api/users controllers.Api.usersByIds
GET /api/user/me controllers.Api.me
GET /api/user/:name controllers.Api.user(name: String)
GET /api/user/:name/games controllers.Api.userGames(name: String)
GET /api/user/:name/activity controllers.Api.activity(name: String)

View file

@ -21,7 +21,7 @@ private[api] final class UserApi(
jsonView(u) ++ Json.obj("url" -> makeUrl(s"@/${u.username}"))
}))
def one(username: String)(implicit ctx: Context): Fu[Option[JsObject]] = UserRepo named username flatMap {
def one(username: String, isAuth: Boolean)(implicit ctx: Context): Fu[Option[JsObject]] = UserRepo named username flatMap {
case None => fuccess(none)
case Some(u) if u.disabled => fuccess {
Json.obj(

View file

@ -106,6 +106,8 @@ case class User(
def planMonths: Option[Int] = activePlan.map(_.months)
def createdSinceDays(days: Int) = createdAt isBefore DateTime.now.minusDays(days)
def is(name: String) = id == User.normalize(name)
}
object User {