package im.rosetta.executors; import im.rosetta.Failures; import im.rosetta.client.tags.ECIAuthentificate; import im.rosetta.database.repository.GroupRepository; import im.rosetta.network.packet.PacketGroupCreate; import im.rosetta.util.RandomUtil; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; public class ExecutorGroupCreate extends PacketExecutor { private final GroupRepository groupRepository = new GroupRepository(); @Override public void onPacketReceived(PacketGroupCreate packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()){ /** * Клиент не авторизован, он не может создавать группы */ client.disconnect(Failures.HANDSHAKE_NOT_COMPLETED); return; } String groupId = RandomUtil.randomString(16); this.groupRepository.createGroup(groupId); /** * Отправляем клиенту ид созданной группы */ packet.setGroupId(groupId); client.send(packet); } }