2013-03-21 13:16:10 -06:00
|
|
|
package lila.hub
|
|
|
|
package actorApi
|
|
|
|
|
2018-12-08 04:45:19 -07:00
|
|
|
import chess.format.Uci
|
2016-10-02 08:59:43 -06:00
|
|
|
import org.joda.time.DateTime
|
2014-01-27 06:38:23 -07:00
|
|
|
import play.api.libs.json._
|
2018-12-08 04:45:19 -07:00
|
|
|
import scala.concurrent.Promise
|
2013-03-30 15:30:47 -06:00
|
|
|
|
2016-05-31 07:19:12 -06:00
|
|
|
sealed abstract class Deploy(val key: String)
|
|
|
|
case object DeployPre extends Deploy("deployPre")
|
|
|
|
case object DeployPost extends Deploy("deployPost")
|
2018-02-28 12:58:40 -07:00
|
|
|
|
2018-12-08 19:27:44 -07:00
|
|
|
case object Shutdown // on actor system termination
|
|
|
|
|
2019-05-01 22:10:15 -06:00
|
|
|
// announce something to all clients
|
2019-10-12 06:03:36 -06:00
|
|
|
case class Announce(msg: String, date: DateTime, json: JsObject)
|
2019-05-01 22:10:15 -06:00
|
|
|
|
2018-02-28 12:58:40 -07:00
|
|
|
package streamer {
|
|
|
|
case class StreamsOnAir(html: String)
|
|
|
|
case class StreamStart(userId: String)
|
|
|
|
}
|
2013-06-07 08:04:31 -06:00
|
|
|
|
2013-05-29 09:46:21 -06:00
|
|
|
package map {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class Tell(id: String, msg: Any)
|
2018-12-08 04:45:19 -07:00
|
|
|
case class TellIfExists(id: String, msg: Any)
|
2018-12-08 02:20:21 -07:00
|
|
|
case class Exists(id: String, promise: Promise[Boolean])
|
2013-05-29 09:46:21 -06:00
|
|
|
}
|
2013-05-18 22:08:09 -06:00
|
|
|
|
2018-12-08 04:45:19 -07:00
|
|
|
package socket {
|
|
|
|
case class SendTo(userId: String, message: JsObject)
|
|
|
|
object SendTo {
|
|
|
|
def apply[A: Writes](userId: String, typ: String, data: A): SendTo =
|
|
|
|
SendTo(userId, Json.obj("t" -> typ, "d" -> data))
|
|
|
|
}
|
|
|
|
case class SendTos(userIds: Set[String], message: JsObject)
|
|
|
|
object SendTos {
|
|
|
|
def apply[A: Writes](userIds: Set[String], typ: String, data: A): SendTos =
|
|
|
|
SendTos(userIds, Json.obj("t" -> typ, "d" -> data))
|
|
|
|
}
|
2019-09-05 02:13:31 -06:00
|
|
|
object remote {
|
|
|
|
case class TellSriIn(sri: String, user: Option[String], msg: JsObject)
|
|
|
|
case class TellSriOut(sri: String, payload: JsValue)
|
|
|
|
case class ConnectUser(userId: String)
|
|
|
|
}
|
2018-12-08 04:45:19 -07:00
|
|
|
}
|
2013-05-12 09:27:28 -06:00
|
|
|
|
2014-01-13 15:51:49 -07:00
|
|
|
package report {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class Cheater(userId: String, text: String)
|
2019-09-05 02:13:31 -06:00
|
|
|
case class Shutup(userId: String, text: String, major: Boolean)
|
2017-08-10 09:08:23 -06:00
|
|
|
case class Booster(winnerId: String, loserId: String)
|
2014-01-16 01:46:01 -07:00
|
|
|
}
|
|
|
|
|
2017-11-11 20:20:49 -07:00
|
|
|
package security {
|
2017-11-12 21:49:01 -07:00
|
|
|
case class GarbageCollect(userId: String, ipBan: Boolean)
|
2018-07-18 05:39:47 -06:00
|
|
|
case class GCImmediateSb(userId: String)
|
2017-11-13 19:35:07 -07:00
|
|
|
case class CloseAccount(userId: String)
|
2017-11-11 20:20:49 -07:00
|
|
|
}
|
|
|
|
|
2015-04-29 09:04:55 -06:00
|
|
|
package shutup {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class RecordPublicForumMessage(userId: String, text: String)
|
|
|
|
case class RecordTeamForumMessage(userId: String, text: String)
|
2019-09-05 02:13:31 -06:00
|
|
|
case class RecordPrivateMessage(userId: String, toUserId: String, text: String, muted: Boolean)
|
2017-02-14 08:34:07 -07:00
|
|
|
case class RecordPrivateChat(chatId: String, userId: String, text: String)
|
2017-12-16 16:02:47 -07:00
|
|
|
case class RecordPublicChat(userId: String, text: String, source: PublicSource)
|
|
|
|
|
|
|
|
sealed trait PublicSource
|
|
|
|
object PublicSource {
|
|
|
|
case class Tournament(id: String) extends PublicSource
|
|
|
|
case class Simul(id: String) extends PublicSource
|
|
|
|
case class Study(id: String) extends PublicSource
|
|
|
|
case class Watcher(gameId: String) extends PublicSource
|
|
|
|
}
|
2015-04-29 09:04:55 -06:00
|
|
|
}
|
|
|
|
|
2014-01-16 01:46:01 -07:00
|
|
|
package mod {
|
2017-05-10 17:57:46 -06:00
|
|
|
case class MarkCheater(userId: String, value: Boolean)
|
2017-02-14 08:34:07 -07:00
|
|
|
case class MarkBooster(userId: String)
|
|
|
|
case class ChatTimeout(mod: String, user: String, reason: String)
|
2017-10-28 17:57:17 -06:00
|
|
|
case class Shadowban(user: String, value: Boolean)
|
2017-03-01 02:27:22 -07:00
|
|
|
case class KickFromRankings(userId: String)
|
2019-02-24 18:02:13 -07:00
|
|
|
case class SetPermissions(userId: String, permissions: List[String])
|
2019-08-25 01:16:47 -06:00
|
|
|
case class AutoWarning(userId: String, subject: String)
|
2019-11-10 13:19:42 -07:00
|
|
|
case class Impersonate(userId: String, by: Option[String])
|
2014-01-13 15:51:49 -07:00
|
|
|
}
|
|
|
|
|
2017-10-19 22:02:55 -06:00
|
|
|
package playban {
|
|
|
|
case class Playban(userId: String, mins: Int)
|
2019-08-24 04:39:42 -06:00
|
|
|
case class SitcounterClose(userId: String)
|
2017-10-19 22:02:55 -06:00
|
|
|
}
|
|
|
|
|
2013-03-31 12:36:48 -06:00
|
|
|
package captcha {
|
2017-02-14 08:34:07 -07:00
|
|
|
case object AnyCaptcha
|
|
|
|
case class GetCaptcha(id: String)
|
|
|
|
case class ValidCaptcha(id: String, solution: String)
|
2013-03-31 12:36:48 -06:00
|
|
|
}
|
2013-04-01 08:31:08 -06:00
|
|
|
|
|
|
|
package lobby {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class ReloadTournaments(html: String)
|
|
|
|
case class ReloadSimuls(html: String)
|
2013-04-01 08:31:08 -06:00
|
|
|
}
|
2013-04-03 11:12:38 -06:00
|
|
|
|
2015-04-04 06:05:40 -06:00
|
|
|
package simul {
|
2018-12-08 07:12:55 -07:00
|
|
|
case class GetHostIds(promise: Promise[Set[String]])
|
2017-02-14 08:34:07 -07:00
|
|
|
case class PlayerMove(gameId: String)
|
2015-04-04 06:05:40 -06:00
|
|
|
}
|
|
|
|
|
2016-02-20 01:37:16 -07:00
|
|
|
package slack {
|
2017-02-14 08:34:07 -07:00
|
|
|
sealed trait Event
|
|
|
|
case class Error(msg: String) extends Event
|
|
|
|
case class Warning(msg: String) extends Event
|
|
|
|
case class Info(msg: String) extends Event
|
|
|
|
case class Victory(msg: String) extends Event
|
2018-11-04 05:10:56 -07:00
|
|
|
case class TournamentName(userName: String, tourId: String, tourName: String) extends Event
|
2016-02-20 01:37:16 -07:00
|
|
|
}
|
|
|
|
|
2013-05-24 04:34:25 -06:00
|
|
|
package timeline {
|
2018-12-07 02:11:32 -07:00
|
|
|
case class ReloadTimelines(userIds: List[String])
|
2013-05-24 10:27:42 -06:00
|
|
|
|
2017-02-14 08:34:07 -07:00
|
|
|
sealed abstract class Atom(val channel: String, val okForKid: Boolean) {
|
|
|
|
def userIds: List[String]
|
|
|
|
}
|
|
|
|
case class Follow(u1: String, u2: String) extends Atom("follow", true) {
|
|
|
|
def userIds = List(u1, u2)
|
|
|
|
}
|
|
|
|
case class TeamJoin(userId: String, teamId: String) extends Atom("teamJoin", false) {
|
|
|
|
def userIds = List(userId)
|
|
|
|
}
|
|
|
|
case class TeamCreate(userId: String, teamId: String) extends Atom("teamCreate", false) {
|
|
|
|
def userIds = List(userId)
|
|
|
|
}
|
|
|
|
case class ForumPost(userId: String, topicId: Option[String], topicName: String, postId: String) extends Atom(s"forum:${~topicId}", false) {
|
|
|
|
def userIds = List(userId)
|
|
|
|
}
|
|
|
|
case class NoteCreate(from: String, to: String) extends Atom("note", false) {
|
|
|
|
def userIds = List(from, to)
|
|
|
|
}
|
|
|
|
case class TourJoin(userId: String, tourId: String, tourName: String) extends Atom("tournament", true) {
|
|
|
|
def userIds = List(userId)
|
|
|
|
}
|
|
|
|
case class GameEnd(playerId: String, opponent: Option[String], win: Option[Boolean], perf: String) extends Atom("gameEnd", true) {
|
|
|
|
def userIds = opponent.toList
|
|
|
|
}
|
|
|
|
case class SimulCreate(userId: String, simulId: String, simulName: String) extends Atom("simulCreate", true) {
|
|
|
|
def userIds = List(userId)
|
|
|
|
}
|
|
|
|
case class SimulJoin(userId: String, simulId: String, simulName: String) extends Atom("simulJoin", true) {
|
|
|
|
def userIds = List(userId)
|
|
|
|
}
|
|
|
|
case class StudyCreate(userId: String, studyId: String, studyName: String) extends Atom("studyCreate", true) {
|
|
|
|
def userIds = List(userId)
|
|
|
|
}
|
|
|
|
case class StudyLike(userId: String, studyId: String, studyName: String) extends Atom("studyLike", true) {
|
|
|
|
def userIds = List(userId)
|
|
|
|
}
|
|
|
|
case class PlanStart(userId: String) extends Atom("planStart", true) {
|
|
|
|
def userIds = List(userId)
|
|
|
|
}
|
2017-08-05 03:37:09 -06:00
|
|
|
case class BlogPost(id: String, slug: String, title: String) extends Atom("blogPost", true) {
|
|
|
|
def userIds = Nil
|
|
|
|
}
|
2018-01-03 09:59:26 -07:00
|
|
|
case class StreamStart(id: String, name: String) extends Atom("streamStart", true) {
|
|
|
|
def userIds = List(id)
|
|
|
|
}
|
2013-05-24 14:37:27 -06:00
|
|
|
|
2017-02-14 08:34:07 -07:00
|
|
|
object propagation {
|
|
|
|
sealed trait Propagation
|
|
|
|
case class Users(users: List[String]) extends Propagation
|
|
|
|
case class Followers(user: String) extends Propagation
|
|
|
|
case class Friends(user: String) extends Propagation
|
|
|
|
case class ExceptUser(user: String) extends Propagation
|
|
|
|
case class ModsOnly(value: Boolean) extends Propagation
|
|
|
|
}
|
2013-05-24 14:37:27 -06:00
|
|
|
|
2017-02-14 08:34:07 -07:00
|
|
|
import propagation._
|
|
|
|
|
|
|
|
case class Propagate(data: Atom, propagations: List[Propagation] = Nil) {
|
|
|
|
def toUsers(ids: List[String]) = add(Users(ids))
|
|
|
|
def toUser(id: String) = add(Users(List(id)))
|
|
|
|
def toFollowersOf(id: String) = add(Followers(id))
|
|
|
|
def toFriendsOf(id: String) = add(Friends(id))
|
|
|
|
def exceptUser(id: String) = add(ExceptUser(id))
|
|
|
|
def modsOnly(value: Boolean) = add(ModsOnly(value))
|
|
|
|
private def add(p: Propagation) = copy(propagations = p :: propagations)
|
|
|
|
}
|
2013-05-24 04:34:25 -06:00
|
|
|
}
|
|
|
|
|
2013-05-08 12:30:55 -06:00
|
|
|
package game {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class ChangeFeatured(id: String, msg: JsObject)
|
|
|
|
case object Count
|
2013-05-08 12:30:55 -06:00
|
|
|
}
|
|
|
|
|
2015-06-16 10:46:30 -06:00
|
|
|
package tv {
|
2019-11-05 01:24:13 -07:00
|
|
|
case class TvSelect(gameId: String, speed: chess.Speed, data: JsObject)
|
2015-06-16 10:46:30 -06:00
|
|
|
}
|
|
|
|
|
2016-06-02 12:42:53 -06:00
|
|
|
package notify {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class Notified(userId: String)
|
2019-09-04 13:10:32 -06:00
|
|
|
case class NotifiedBatch(userIds: Iterable[String])
|
2016-06-02 12:42:53 -06:00
|
|
|
}
|
|
|
|
|
2017-08-06 01:40:37 -06:00
|
|
|
package team {
|
|
|
|
case class CreateTeam(id: String, name: String, userId: String)
|
|
|
|
case class JoinTeam(id: String, userId: String)
|
2013-04-03 11:12:38 -06:00
|
|
|
}
|
2013-04-05 06:07:25 -06:00
|
|
|
|
2016-03-12 05:56:44 -07:00
|
|
|
package fishnet {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class AutoAnalyse(gameId: String)
|
2017-12-20 07:27:24 -07:00
|
|
|
case class NewKey(userId: String, key: String)
|
2018-01-15 21:12:10 -07:00
|
|
|
case class StudyChapterRequest(
|
|
|
|
studyId: String,
|
|
|
|
chapterId: String,
|
|
|
|
initialFen: Option[chess.format.FEN],
|
|
|
|
variant: chess.variant.Variant,
|
2018-04-15 16:17:09 -06:00
|
|
|
moves: List[Uci],
|
2018-11-23 20:02:09 -07:00
|
|
|
userId: String
|
2018-01-15 21:12:10 -07:00
|
|
|
)
|
2013-04-05 06:07:25 -06:00
|
|
|
}
|
2013-04-08 13:21:03 -06:00
|
|
|
|
2016-10-23 10:14:59 -06:00
|
|
|
package user {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class Note(from: String, to: String, text: String, mod: Boolean)
|
2016-10-23 10:14:59 -06:00
|
|
|
}
|
|
|
|
|
2013-04-08 13:21:03 -06:00
|
|
|
package round {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class MoveEvent(
|
2017-08-23 17:56:39 -06:00
|
|
|
gameId: String,
|
|
|
|
fen: String,
|
|
|
|
move: String
|
2017-07-19 10:53:49 -06:00
|
|
|
)
|
|
|
|
case class CorresMoveEvent(
|
2017-08-23 17:56:39 -06:00
|
|
|
move: MoveEvent,
|
|
|
|
playerUserId: Option[String],
|
|
|
|
mobilePushable: Boolean,
|
|
|
|
alarmable: Boolean,
|
|
|
|
unlimited: Boolean
|
2017-07-19 10:53:49 -06:00
|
|
|
)
|
2017-09-04 13:40:24 -06:00
|
|
|
case class CorresTakebackOfferEvent(gameId: String)
|
|
|
|
case class CorresDrawOfferEvent(gameId: String)
|
2017-07-19 10:53:49 -06:00
|
|
|
case class SimulMoveEvent(
|
2017-08-23 17:56:39 -06:00
|
|
|
move: MoveEvent,
|
|
|
|
simulId: String,
|
|
|
|
opponentUserId: String
|
2017-02-14 08:34:07 -07:00
|
|
|
)
|
|
|
|
case class Berserk(gameId: String, userId: String)
|
2018-12-08 02:20:21 -07:00
|
|
|
case class IsOnGame(color: chess.Color, promise: Promise[Boolean])
|
2019-11-06 02:14:56 -07:00
|
|
|
case class TourStandingOld(data: JsArray)
|
|
|
|
case class TourStanding(tourId: String, data: JsArray)
|
2019-10-22 03:21:13 -06:00
|
|
|
case class FishnetPlay(uci: Uci, ply: Int)
|
2019-10-22 14:59:02 -06:00
|
|
|
case object FishnetStart
|
2018-04-15 16:17:09 -06:00
|
|
|
case class BotPlay(playerId: String, uci: Uci, promise: Option[scala.concurrent.Promise[Unit]] = None)
|
2018-04-17 14:26:18 -06:00
|
|
|
case class RematchOffer(gameId: String)
|
2018-04-17 14:46:15 -06:00
|
|
|
case class RematchYes(playerId: String)
|
|
|
|
case class RematchNo(playerId: String)
|
2018-04-18 17:57:02 -06:00
|
|
|
case class Abort(playerId: String)
|
2018-04-28 20:11:43 -06:00
|
|
|
case class Resign(playerId: String)
|
2019-08-24 10:50:16 -06:00
|
|
|
case class Mlat(micros: Int)
|
2013-04-08 13:21:03 -06:00
|
|
|
}
|
2013-04-21 06:43:49 -06:00
|
|
|
|
2014-04-26 06:03:02 -06:00
|
|
|
package evaluation {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class AutoCheck(userId: String)
|
|
|
|
case class Refresh(userId: String)
|
2014-04-26 06:03:02 -06:00
|
|
|
}
|
|
|
|
|
2013-04-21 06:43:49 -06:00
|
|
|
package bookmark {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class Toggle(gameId: String, userId: String)
|
|
|
|
case class Remove(gameId: String)
|
2013-04-21 06:43:49 -06:00
|
|
|
}
|
2013-05-19 13:08:30 -06:00
|
|
|
|
2013-05-23 04:53:16 -06:00
|
|
|
package relation {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class ReloadOnlineFriends(userId: String)
|
|
|
|
case class Block(u1: String, u2: String)
|
|
|
|
case class UnBlock(u1: String, u2: String)
|
2017-07-20 05:53:26 -06:00
|
|
|
case class Follow(u1: String, u2: String)
|
2013-05-19 13:08:30 -06:00
|
|
|
}
|
2016-01-04 20:40:42 -07:00
|
|
|
|
2017-02-12 14:14:37 -07:00
|
|
|
package study {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class StudyDoor(userId: String, studyId: String, contributor: Boolean, public: Boolean, enters: Boolean)
|
|
|
|
case class StudyBecamePrivate(studyId: String, contributors: Set[String])
|
|
|
|
case class StudyBecamePublic(studyId: String, contributors: Set[String])
|
|
|
|
case class StudyMemberGotWriteAccess(userId: String, studyId: String)
|
|
|
|
case class StudyMemberLostWriteAccess(userId: String, studyId: String)
|
2017-04-17 06:10:21 -06:00
|
|
|
case class RemoveStudy(studyId: String, contributors: Set[String])
|
2017-02-12 14:14:37 -07:00
|
|
|
}
|
|
|
|
|
2016-07-12 11:19:30 -06:00
|
|
|
package plan {
|
2017-02-14 08:34:07 -07:00
|
|
|
case class ChargeEvent(username: String, amount: Int, percent: Int, date: DateTime)
|
2017-07-19 18:13:20 -06:00
|
|
|
case class MonthInc(userId: String, months: Int)
|
2016-07-10 14:12:22 -06:00
|
|
|
}
|