use of com.gianlu.pyxreborn.Models.User in project PretendYoureXyzzyReborn by devgianlu.
the class BaseHandlerWithUser method handleRequest.
@Override
public final JsonObject handleRequest(Server server, JsonObject request, JsonObject response) throws GeneralException {
JsonElement sid = request.get(Fields.SESSION_ID.toString());
if (sid == null)
throw new GeneralException(ErrorCodes.INVALID_REQUEST);
User user = server.users.findBySessionId(sid.getAsString());
if (user == null)
throw new GeneralException(ErrorCodes.NOT_CONNECTED);
return handleRequest(server, user, request, response);
}
use of com.gianlu.pyxreborn.Models.User in project PretendYoureXyzzyReborn by devgianlu.
the class KickUserHandler method handleRequestForAdmin.
@Override
public JsonObject handleRequestForAdmin(Server server, @NotNull User user, JsonObject request, JsonObject response) throws GeneralException {
JsonElement reason = request.get(Fields.KICK_REASON.toString());
JsonElement nickname = request.get(Fields.NICKNAME.toString());
if (nickname == null)
throw new GeneralException(ErrorCodes.INVALID_REQUEST);
User kickUser = server.users.findByNickname(nickname.getAsString());
if (kickUser == null)
throw new GeneralException(ErrorCodes.INVALID_NICKNAME);
server.users.kickUser(kickUser, reason == null ? null : KickReason.parse(reason.getAsString()));
return successful(response);
}
use of com.gianlu.pyxreborn.Models.User in project PretendYoureXyzzyReborn by devgianlu.
the class Games method leaveGame.
/**
* Removes a player or a spectator from the game.
*/
public void leaveGame(@NotNull Game game, @NotNull User user) {
for (Player player : new ArrayList<>(game.players)) {
if (Objects.equals(player.user, user)) {
game.players.remove(player);
JsonObject obj = Utils.event(Events.GAME_PLAYER_LEFT);
obj.addProperty(Fields.NICKNAME.toString(), user.nickname);
// Don't broadcast this to the player itself
server.broadcastMessageToPlayers(game, obj);
if (user == game.host && !game.players.isEmpty())
game.host = game.players.get(0).user;
if (game.players.isEmpty())
killGame(game, KickReason.GAME_EMPTY);
return;
}
}
for (User spectator : new ArrayList<>(game.spectators)) {
if (Objects.equals(spectator, user)) {
game.spectators.remove(spectator);
JsonObject obj = Utils.event(Events.GAME_SPECTATOR_LEFT);
obj.addProperty(Fields.NICKNAME.toString(), user.nickname);
// Don't broadcast this to the user itself
server.broadcastMessageToPlayers(game, obj);
return;
}
}
}
use of com.gianlu.pyxreborn.Models.User in project PretendYoureXyzzyReborn by devgianlu.
the class PyxServerAdapter method onWebsocketHandshakeReceivedAsServer.
/**
* This method takes care of validating the client handshake.
* The handshake must contains a nickname. Optionally, an admin code can be sent to login as admin.
* <p>
* To resume a previous session a session ID can be sent. See {@link ConnectedUsers#removeUser(User, boolean)}.
*/
@Override
public ServerHandshakeBuilder onWebsocketHandshakeReceivedAsServer(WebSocket conn, Draft draft, ClientHandshake request) throws InvalidDataException {
ServerHandshakeBuilder builder = super.onWebsocketHandshakeReceivedAsServer(conn, draft, request);
if (request.hasFieldValue(Fields.NICKNAME.toString())) {
boolean admin = false;
if (request.hasFieldValue(Fields.ADMIN_CODE.toString())) {
String code = request.getFieldValue(Fields.ADMIN_CODE.toString());
if (Objects.equals(code, currentAdminCode)) {
admin = true;
} else {
throw new InvalidDataException(CloseFrame.POLICY_VALIDATION, ErrorCodes.INVALID_ADMIN_CODE.toString());
}
}
try {
User user = users.checkAndAdd(request.getFieldValue(Fields.NICKNAME.toString()), request.getFieldValue(Fields.SESSION_ID.toString()), conn.getRemoteSocketAddress(), admin);
builder.put(Fields.SESSION_ID.toString(), user.sessionId);
} catch (GeneralException ex) {
throw new InvalidDataException(CloseFrame.POLICY_VALIDATION, ex.code.toString());
}
} else {
throw new InvalidDataException(CloseFrame.POLICY_VALIDATION, ErrorCodes.INVALID_REQUEST.toString());
}
return builder;
}
use of com.gianlu.pyxreborn.Models.User in project PretendYoureXyzzyReborn by devgianlu.
the class ListUsersHandler method handleRequest.
@Override
public JsonObject handleRequest(Server server, JsonObject request, JsonObject response) throws GeneralException {
JsonArray list = new JsonArray();
for (User user : server.users) list.add(user.toJson());
response.add(Fields.USERS_LIST.toString(), list);
response.addProperty(Fields.MAX_USERS.toString(), server.users.getMax());
return response;
}
Aggregations