From 32147b0e526dc5133e9ec496265e70cf004ea14b Mon Sep 17 00:00:00 2001 From: L_DelOff Date: Sun, 13 Aug 2023 18:24:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D0=B0=D1=82=D1=82=D0=B5=D1=80=D0=BD=20Template?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TelegramBotController.java | 134 +++--------------- .../ldeloff/servermonitorbot/model/User.java | 3 + .../service/TelegramBotService.java | 14 -- .../service/TelegramBotServiceImpl.java | 91 ------------ .../service/command/CommandTemplate.java | 87 ++++++++++++ .../service/command/FirstUseCommand.java | 23 +++ .../service/command/GetStatusSessions.java | 23 +++ .../service/command/SwitchToMainMenu.java | 35 +++++ .../command/uname/UnameAggregateCommand.java | 24 ++++ .../uname/UnameCommand.java} | 47 +++--- .../service/ssh/SshService.java | 4 +- .../service/ssh/SshServiceImpl.java | 8 +- .../service/uname/UnameService.java | 10 -- 13 files changed, 239 insertions(+), 264 deletions(-) delete mode 100644 src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotService.java delete mode 100644 src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotServiceImpl.java create mode 100644 src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandTemplate.java create mode 100644 src/main/java/ru/ldeloff/servermonitorbot/service/command/FirstUseCommand.java create mode 100644 src/main/java/ru/ldeloff/servermonitorbot/service/command/GetStatusSessions.java create mode 100644 src/main/java/ru/ldeloff/servermonitorbot/service/command/SwitchToMainMenu.java create mode 100644 src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameAggregateCommand.java rename src/main/java/ru/ldeloff/servermonitorbot/service/{uname/UnameServiceImpl.java => command/uname/UnameCommand.java} (51%) delete mode 100644 src/main/java/ru/ldeloff/servermonitorbot/service/uname/UnameService.java diff --git a/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java b/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java index c589eab..d5b17aa 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java @@ -4,18 +4,14 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.telegram.telegrambots.bots.TelegramLongPollingBot; -import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Update; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; -import ru.ldeloff.servermonitorbot.model.Role; import ru.ldeloff.servermonitorbot.model.TelegramBot; -import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.repository.SshRepository; -import ru.ldeloff.servermonitorbot.service.TelegramBotService; -import ru.ldeloff.servermonitorbot.service.role.RoleService; -import ru.ldeloff.servermonitorbot.service.user.UserService; -import ru.ldeloff.servermonitorbot.utils.ui.TelegramBotKeyboard; -import ru.ldeloff.servermonitorbot.utils.ui.uname.UnameChatButtonAggregate; +import ru.ldeloff.servermonitorbot.service.command.FirstUseCommand; +import ru.ldeloff.servermonitorbot.service.command.GetStatusSessions; +import ru.ldeloff.servermonitorbot.service.command.SwitchToMainMenu; +import ru.ldeloff.servermonitorbot.service.command.uname.UnameAggregateCommand; +import ru.ldeloff.servermonitorbot.service.command.uname.UnameCommand; @Service @Slf4j @@ -24,115 +20,46 @@ public class TelegramBotController extends TelegramLongPollingBot { final TelegramBot telegramBot; final SshRepository sshRepository; - final TelegramBotService telegramBotService; - final UserService userService; - final RoleService roleService; + + final FirstUseCommand firstUseCommand; + final GetStatusSessions getStatusSessions; + final UnameAggregateCommand unameAggregateCommand; + final SwitchToMainMenu switchToMainMenu; + final UnameCommand unameCommand; @Override public void onUpdateReceived(Update update) { - Role role = getRole(update); if (update.hasMessage()) { if (update.getMessage().hasText()) { String messageText = update.getMessage().getText(); switch (messageText) { case "/start" -> { - if (role.getId() < 3) { - log.info("Получена команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName() - + " (" + update.getMessage().getChat().getId() + "). OK"); - telegramBotService.firstUse(update, this); - } else { - log.warn("Получена команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName() - + " (" + update.getMessage().getChat().getId() + "). Нет прав"); - telegramBotService.notAuthorization(update, this); - } + firstUseCommand.execute(update, this); } case "Статус" -> { - if (role.getId() < 3) { - log.info("Получена команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName() - + " (" + update.getMessage().getChat().getId() + "). OK"); - telegramBotService.getStatusSessions(update, this); - } else { - log.warn("Получена команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName() - + " (" + update.getMessage().getChat().getId() + "). Нет прав"); - telegramBotService.notAuthorization(update, this); - } + getStatusSessions.execute(update, this); } case "uname" -> { - if (role.getId() < 3) { - log.info("Получена команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName() - + " (" + update.getMessage().getChat().getId() + "). OK"); - telegramBotService.sendUnameAggregate(update, this); - } else { - log.warn("Получена команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName() - + " (" + update.getMessage().getChat().getId() + "). Нет прав"); - telegramBotService.notAuthorization(update, this); - } + unameAggregateCommand.execute(update, this); } default -> { - if (role.getId() < 3) { - log.warn("Неизвестная команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName() - + " (" + update.getMessage().getChat().getId() + "). ОК"); - telegramBotService.switchToMainMenu(update, this); - } else { - log.warn("Неизвестная команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName() - + " (" + update.getMessage().getChat().getId() + "). Нет прав"); - telegramBotService.notAuthorization(update, this); - } + switchToMainMenu.execute(update, this); } } } } else if (update.hasCallbackQuery()) { - String messageText = update.getCallbackQuery().getData(); - String [] tags = messageText.split(":"); + String [] tags = update.getCallbackQuery().getData().split(":"); if (tags.length > 1) { switch (tags[0]) { - case "uname": - if (role.getId() < 3) { - log.info("Получена команда '" + messageText - + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() - + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). ОК"); - telegramBotService.uname(update, this); - } else { - log.info("Получена команда '" + messageText - + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() - + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). Нет прав"); - telegramBotService.notAuthorization(update, this); - } - break; - default: - if (role.getId() < 3) { - log.warn("Неизвестная команда '" + messageText - + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() - + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). ОК"); - telegramBotService.switchToMainMenu(update, this); - } else { - log.warn("Неизвестная команда '" + messageText - + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() - + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). Нет прав"); - telegramBotService.notAuthorization(update, this); - } - break; + case "uname" -> { + unameCommand.execute(update, this); + } + default -> { + switchToMainMenu.execute(update, this); + } } } else { - if (role.getId() < 3) { - log.warn("Неверный формат команды '" + messageText - + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() - + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). ОК"); - telegramBotService.switchToMainMenu(update, this); - } else { - log.warn("Неверный формат команды '" + messageText - + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() - + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). Нет прав"); - telegramBotService.notAuthorization(update, this); - } + switchToMainMenu.execute(update, this); } } } @@ -152,19 +79,4 @@ public class TelegramBotController extends TelegramLongPollingBot { super.onClosing(); sshRepository.disconnectSessions(); } - - private Role getRole(Update update) { - Long id = null; - if (update.hasMessage()) { - id = update.getMessage().getChat().getId(); - } else if (update.hasCallbackQuery()) { - id = update.getCallbackQuery().getMessage().getChat().getId(); - } - User user = userService.getByTelegramId(id); - if (user == null) { - return roleService.findRoleById(3L); - } else { - return user.getRole(); - } - } } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/User.java b/src/main/java/ru/ldeloff/servermonitorbot/model/User.java index c732b3e..a32c391 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/model/User.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/User.java @@ -18,4 +18,7 @@ public class User { @ManyToOne @JoinColumn(name = "role_id") private Role role; + + @Transient + private String login; } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotService.java deleted file mode 100644 index 507a7fc..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotService.java +++ /dev/null @@ -1,14 +0,0 @@ -package ru.ldeloff.servermonitorbot.service; - -import org.telegram.telegrambots.meta.api.objects.Update; -import ru.ldeloff.servermonitorbot.controller.TelegramBotController; - -public interface TelegramBotService { - - void switchToMainMenu(Update update, TelegramBotController bot); - void getStatusSessions(Update update, TelegramBotController bot); - void sendUnameAggregate(Update update, TelegramBotController bot); - void uname(Update update, TelegramBotController bot); - void firstUse(Update update, TelegramBotController bot); - void notAuthorization(Update update, TelegramBotController bot); -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotServiceImpl.java deleted file mode 100644 index 84b24af..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotServiceImpl.java +++ /dev/null @@ -1,91 +0,0 @@ -package ru.ldeloff.servermonitorbot.service; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import org.telegram.telegrambots.meta.api.objects.Update; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; -import ru.ldeloff.servermonitorbot.controller.TelegramBotController; -import ru.ldeloff.servermonitorbot.repository.SshRepository; -import ru.ldeloff.servermonitorbot.service.ssh.SshService; -import ru.ldeloff.servermonitorbot.service.uname.UnameService; -import ru.ldeloff.servermonitorbot.utils.ui.TelegramBotKeyboard; -import ru.ldeloff.servermonitorbot.utils.ui.uname.UnameChatButtonAggregate; - -@Slf4j -@Service -@RequiredArgsConstructor -public class TelegramBotServiceImpl implements TelegramBotService { - final TelegramBotKeyboard telegramBotKeyboard; - final UnameChatButtonAggregate unameChatButtonAggregate; - final UnameService unameService; - final SshService sshService; - - @Override - public void firstUse(Update update, TelegramBotController bot) { - SendMessage message = new SendMessage(); - long chatId = 0L; - chatId = update.getMessage().getChatId(); - message.setText("Добро пожаловать " + update.getMessage().getChat().getUserName() + "!"); - message.setChatId(chatId); - sendMessage(telegramBotKeyboard.uiForm(message), bot); - } - - @Override - public void notAuthorization(Update update, TelegramBotController bot) { - long id = 0L; - String login = null; - long chatId = 0L; - if (update.hasMessage()) { - id = update.getMessage().getChat().getId(); - login = update.getMessage().getChat().getUserName(); - chatId = update.getMessage().getChatId(); - } else if (update.hasCallbackQuery()) { - id = update.getCallbackQuery().getMessage().getChat().getId(); - login = update.getCallbackQuery().getMessage().getChat().getUserName(); - chatId = update.getCallbackQuery().getMessage().getChatId(); - } - SendMessage message = new SendMessage(); - message.setText("У пользователя " + login - + " (" + id + ") недостаточно прав для выполнения этой команды"); - message.setChatId(chatId); - sendMessage(message, bot); - } - - @Override - public void switchToMainMenu(Update update, TelegramBotController bot) { - SendMessage message = new SendMessage(); - long chatId = 0L; - try { - chatId = update.getMessage().getChatId(); - } catch (Exception e) { - chatId = update.getCallbackQuery().getMessage().getChatId(); - } - message.setText("Неверная команда и или формат. Попробуем сначала."); - message.setChatId(chatId); - sendMessage(telegramBotKeyboard.uiForm(message), bot); - } - @Override - public void getStatusSessions(Update update, TelegramBotController bot) { - sendMessage(sshService.getStatusSessions(update), bot); - } - @Override - public void sendUnameAggregate(Update update, TelegramBotController bot) { - sendMessage(unameService.sendUnameAggregate(update), bot); - } - - @Override - public void uname(Update update, TelegramBotController bot) { - sendMessage(unameService.uname(update), bot); - } - - private void sendMessage(SendMessage message, TelegramBotController bot) { - try { - bot.execute(message); - } catch (TelegramApiException e) { - e.printStackTrace(); - log.warn(e.getMessage()); - } - } -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandTemplate.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandTemplate.java new file mode 100644 index 0000000..0f178d7 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandTemplate.java @@ -0,0 +1,87 @@ +package ru.ldeloff.servermonitorbot.service.command; + +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Update; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import ru.ldeloff.servermonitorbot.controller.TelegramBotController; +import ru.ldeloff.servermonitorbot.model.User; +import ru.ldeloff.servermonitorbot.service.role.RoleService; +import ru.ldeloff.servermonitorbot.service.user.UserService; + +@Data +@Slf4j +@RequiredArgsConstructor +public abstract class CommandTemplate { + final UserService userService; + final RoleService roleService; + long expectedRole = 2L; + public abstract SendMessage actionForAuth(User user, SendMessage message); + + public SendMessage actionForNotAuth(User user, SendMessage message) { + message.setText("У пользователя " + user.getLogin() + " (" + user.getTelegramId() + + ") недостаточно прав для выполнения этой команды"); + return message; + } + public void execute(Update update, TelegramBotController bot) { + User user = getUser(update); + String message = getMessage(update); + SendMessage answer = new SendMessage(); + answer.setChatId(user.getTelegramId()); + answer.setText(message); + if (user.getRole().getId() <= expectedRole) { + logSuccess(user, message); + sendMessage(actionForAuth(user, answer), bot); + } else { + logNotAuth(user, message); + sendMessage(actionForNotAuth(user, answer), bot); + } + } + protected void logSuccess(User user, String message) { + log.info("Получена команда '" + message + "' от " + user.getLogin() + + " (" + user.getTelegramId() + "). OK"); + } + protected void logNotAuth(User user, String message) { + log.warn("Получена команда '" + message + "' от " + user.getLogin() + + " (" + user.getTelegramId() + "). Нет прав"); + } + private User getUser(Update update) { + long id = -1L; + String login = null; + if (update.hasMessage()) { + id = update.getMessage().getChat().getId(); + login = update.getMessage().getChat().getUserName(); + } else if (update.hasCallbackQuery()) { + id = update.getCallbackQuery().getMessage().getChat().getId(); + login = update.getCallbackQuery().getMessage().getChat().getUserName(); + } + User user = userService.getByTelegramId(id); + if (user == null) { + user = new User(); + user.setTelegramId(id); + user.setRole(roleService.findRoleById(3L)); + } + user.setLogin(login); + return user; + } + + private String getMessage(Update update) { + if (update.hasMessage()) { + return update.getMessage().getText(); + } else if (update.hasCallbackQuery()) { + return update.getCallbackQuery().getData(); + } + return ""; + } + + private void sendMessage(SendMessage message, TelegramBotController bot) { + try { + bot.execute(message); + } catch (TelegramApiException e) { + e.printStackTrace(); + log.warn(e.getMessage()); + } + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/FirstUseCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/FirstUseCommand.java new file mode 100644 index 0000000..dfab89d --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/FirstUseCommand.java @@ -0,0 +1,23 @@ +package ru.ldeloff.servermonitorbot.service.command; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import ru.ldeloff.servermonitorbot.model.User; +import ru.ldeloff.servermonitorbot.service.role.RoleService; +import ru.ldeloff.servermonitorbot.service.user.UserService; +import ru.ldeloff.servermonitorbot.utils.ui.TelegramBotKeyboard; + +@Service +public class FirstUseCommand extends CommandTemplate { + final TelegramBotKeyboard telegramBotKeyboard; + + public FirstUseCommand(UserService userService, RoleService roleService, TelegramBotKeyboard telegramBotKeyboard) { + super(userService, roleService); + this.telegramBotKeyboard = telegramBotKeyboard; + } + @Override + public SendMessage actionForAuth(User user, SendMessage message) { + message.setText("Добро пожаловать " + user.getLogin() + "!"); + return telegramBotKeyboard.uiForm(message); + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/GetStatusSessions.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/GetStatusSessions.java new file mode 100644 index 0000000..af5d29e --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/GetStatusSessions.java @@ -0,0 +1,23 @@ +package ru.ldeloff.servermonitorbot.service.command; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import ru.ldeloff.servermonitorbot.model.User; +import ru.ldeloff.servermonitorbot.service.role.RoleService; +import ru.ldeloff.servermonitorbot.service.ssh.SshService; +import ru.ldeloff.servermonitorbot.service.user.UserService; + +@Service +public class GetStatusSessions extends CommandTemplate { + final SshService sshService; + + public GetStatusSessions(UserService userService, RoleService roleService, SshService sshService) { + super(userService, roleService); + this.sshService = sshService; + } + + @Override + public SendMessage actionForAuth(User user, SendMessage message) { + return sshService.getStatusSessions(message); + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/SwitchToMainMenu.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/SwitchToMainMenu.java new file mode 100644 index 0000000..43dec0e --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/SwitchToMainMenu.java @@ -0,0 +1,35 @@ +package ru.ldeloff.servermonitorbot.service.command; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import ru.ldeloff.servermonitorbot.model.User; +import ru.ldeloff.servermonitorbot.service.role.RoleService; +import ru.ldeloff.servermonitorbot.service.user.UserService; +import ru.ldeloff.servermonitorbot.utils.ui.TelegramBotKeyboard; + +@Service +@Slf4j +public class SwitchToMainMenu extends CommandTemplate { + final TelegramBotKeyboard telegramBotKeyboard; + + public SwitchToMainMenu(UserService userService, RoleService roleService, TelegramBotKeyboard telegramBotKeyboard) { + super(userService, roleService); + this.telegramBotKeyboard = telegramBotKeyboard; + } + @Override + public SendMessage actionForAuth(User user, SendMessage message) { + message.setText("Неверная команда. Попробуем сначала."); + return telegramBotKeyboard.uiForm(message); + } + @Override + public void logSuccess(User user, String message) { + log.warn("Получена несуществующая команда '" + message + "' от " + user.getLogin() + + " (" + user.getTelegramId() + "). OK"); + } + @Override + public void logNotAuth(User user, String message) { + log.warn("Получена несуществующая команда '" + message + "' от " + user.getLogin() + + " (" + user.getTelegramId() + "). Нет прав"); + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameAggregateCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameAggregateCommand.java new file mode 100644 index 0000000..5bee9c1 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameAggregateCommand.java @@ -0,0 +1,24 @@ +package ru.ldeloff.servermonitorbot.service.command.uname; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import ru.ldeloff.servermonitorbot.model.User; +import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; +import ru.ldeloff.servermonitorbot.service.role.RoleService; +import ru.ldeloff.servermonitorbot.service.user.UserService; +import ru.ldeloff.servermonitorbot.utils.ui.uname.UnameChatButtonAggregate; + +@Service +public class UnameAggregateCommand extends CommandTemplate { + final UnameChatButtonAggregate unameChatButtonAggregate; + + public UnameAggregateCommand(UserService userService, RoleService roleService, UnameChatButtonAggregate unameChatButtonAggregate) { + super(userService, roleService); + this.unameChatButtonAggregate = unameChatButtonAggregate; + } + + @Override + public SendMessage actionForAuth(User user, SendMessage message) { + return unameChatButtonAggregate.uiForm(message); + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/uname/UnameServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameCommand.java similarity index 51% rename from src/main/java/ru/ldeloff/servermonitorbot/service/uname/UnameServiceImpl.java rename to src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameCommand.java index e7a3304..94e3b73 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/uname/UnameServiceImpl.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameCommand.java @@ -1,15 +1,16 @@ -package ru.ldeloff.servermonitorbot.service.uname; +package ru.ldeloff.servermonitorbot.service.command.uname; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import org.telegram.telegrambots.meta.api.objects.Update; import ru.ldeloff.servermonitorbot.model.Command; import ru.ldeloff.servermonitorbot.model.SshServer; +import ru.ldeloff.servermonitorbot.model.User; +import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; +import ru.ldeloff.servermonitorbot.service.role.RoleService; import ru.ldeloff.servermonitorbot.service.ssh.SshService; +import ru.ldeloff.servermonitorbot.service.user.UserService; import ru.ldeloff.servermonitorbot.utils.SshServerUtils; -import ru.ldeloff.servermonitorbot.utils.ui.uname.UnameChatButtonAggregate; import java.util.Arrays; import java.util.List; @@ -17,46 +18,32 @@ import java.util.Objects; import java.util.Optional; @Service -@RequiredArgsConstructor @Slf4j -public class UnameServiceImpl implements UnameService { +public class UnameCommand extends CommandTemplate { final SshService sshService; - final UnameChatButtonAggregate unameChatButtonAggregate; - @Override - public SendMessage sendUnameAggregate(Update update) { - SendMessage message = new SendMessage(); - long chatId = update.getMessage().getChatId(); - message.setChatId(chatId); - return unameChatButtonAggregate.uiForm(message); + public UnameCommand(UserService userService, RoleService roleService, SshService sshService) { + super(userService, roleService); + this.sshService = sshService; } @Override - public SendMessage uname(Update update) { - String messageText = update.getCallbackQuery().getData(); - - String [] tags = Arrays.stream(messageText.split(":")) + public SendMessage actionForAuth(User user, SendMessage message) { + String [] tags = Arrays.stream(message.getText().split(":")) .map(String::trim) .toArray(String[]::new); - String result; if (tags[1].equals("all")) { - result = unameAllHost(); + message.setText(unameAllHost()); } else { - result = unameSpecificHost(tags[1]); + message.setText(Objects.requireNonNull(unameSpecificHost(tags[1]))); } - SendMessage message = new SendMessage(); - long chatId = update.getCallbackQuery().getMessage().getChatId(); - message.setChatId(chatId); - message.setText(result); return message; } private String unameAllHost() { - List servers = SshServerUtils.filterGoodServers(sshService.getSshServers()); - StringBuilder response = new StringBuilder(); - servers.forEach(server -> { - response.append(unameSpecificHost(server.getName())).append("\n"); - }); - return response.toString(); + List servers = SshServerUtils.filterGoodServers(sshService.getSshServers()); + StringBuilder response = new StringBuilder(); + servers.forEach(server -> response.append(unameSpecificHost(server.getName())).append("\n")); + return response.toString(); } private String unameSpecificHost(String serverName) { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java index 80c4378..126e358 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java @@ -2,14 +2,14 @@ package ru.ldeloff.servermonitorbot.service.ssh; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import org.telegram.telegrambots.meta.api.objects.Update; import ru.ldeloff.servermonitorbot.model.Command; import ru.ldeloff.servermonitorbot.model.SshServer; import java.util.List; public interface SshService { - SendMessage getStatusSessions(Update update); + SendMessage getStatusSessions(SendMessage update); + List getSshServers(); Command execute(Command command); List execute(List commands); diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java index 565c3c4..f5ebec4 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java @@ -7,7 +7,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import org.telegram.telegrambots.meta.api.objects.Update; import ru.ldeloff.servermonitorbot.model.Command; import ru.ldeloff.servermonitorbot.model.SshServer; import ru.ldeloff.servermonitorbot.repository.SshRepository; @@ -19,14 +18,11 @@ import java.util.List; @Service @Slf4j @RequiredArgsConstructor -public class SshServiceImpl implements SshService { +public class SshServiceImpl implements SshService { final SshRepository sshRepository; @Override - public SendMessage getStatusSessions(Update update) { - SendMessage message = new SendMessage(); - long chatId = update.getMessage().getChatId(); + public SendMessage getStatusSessions(SendMessage message) { message.setText(sshRepository.getStatusSessions()); - message.setChatId(chatId); return message; } @Override diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/uname/UnameService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/uname/UnameService.java deleted file mode 100644 index 46e9096..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/uname/UnameService.java +++ /dev/null @@ -1,10 +0,0 @@ -package ru.ldeloff.servermonitorbot.service.uname; - -import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import org.telegram.telegrambots.meta.api.objects.Update; - -public interface UnameService { - SendMessage sendUnameAggregate(Update update); - - SendMessage uname(Update update); -}