Добавление проекта из телеги
This commit is contained in:
@@ -37,6 +37,7 @@ gitlab-bot:
|
|||||||
url-pull-request-close: ${GITLAB_URL}
|
url-pull-request-close: ${GITLAB_URL}
|
||||||
url-pull-request-comment: ${GITLAB_URL}/api/v4/projects/{0}/merge_requests/{1}/notes
|
url-pull-request-comment: ${GITLAB_URL}/api/v4/projects/{0}/merge_requests/{1}/notes
|
||||||
url-pull-request: ${GITLAB_URL}/api/v4/projects/{0}/merge_requests/{1}?page={2}&per_page=100
|
url-pull-request: ${GITLAB_URL}/api/v4/projects/{0}/merge_requests/{1}?page={2}&per_page=100
|
||||||
|
url-merge-request-add: ${GITLAB_URL}/api/v4/projects/{0}%2F{1}
|
||||||
user-url: ${GITLAB_URL}/api/v4/user
|
user-url: ${GITLAB_URL}/api/v4/user
|
||||||
users-url: ${GITLAB_URL}/api/v4/users
|
users-url: ${GITLAB_URL}/api/v4/users
|
||||||
teamcity:
|
teamcity:
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ ui.menu.task=My tasks
|
|||||||
ui.menu.mr=Merge Request
|
ui.menu.mr=Merge Request
|
||||||
ui.menu.setting=Settings
|
ui.menu.setting=Settings
|
||||||
ui.menu.add_mr=Add project
|
ui.menu.add_mr=Add project
|
||||||
|
ui.menu.add_mr.text=Copy the url of the project and send it to me
|
||||||
|
menu.add_project_success=Project added successfully
|
||||||
ui.menu.setting.text=This is the settings menu
|
ui.menu.setting.text=This is the settings menu
|
||||||
ui.menu.setting.language=Language settings
|
ui.menu.setting.language=Language settings
|
||||||
ui.menu.setting.language.text=Choose your language
|
ui.menu.setting.language.text=Choose your language
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ ui.menu.task=Мои задачи
|
|||||||
ui.menu.mr=Merge Request
|
ui.menu.mr=Merge Request
|
||||||
ui.menu.setting=Настройки
|
ui.menu.setting=Настройки
|
||||||
ui.menu.add_mr=Добавить проект
|
ui.menu.add_mr=Добавить проект
|
||||||
|
ui.menu.add_mr.text=Скопируйте url проекта и отправьте его мне
|
||||||
|
menu.add_project_success=Проект успешно добавлен
|
||||||
ui.menu.setting.text=Это меню настроек
|
ui.menu.setting.text=Это меню настроек
|
||||||
ui.menu.setting.language=Настройки языка
|
ui.menu.setting.language=Настройки языка
|
||||||
ui.menu.setting.language.text=Выберете язык
|
ui.menu.setting.language.text=Выберете язык
|
||||||
|
|||||||
@@ -42,4 +42,6 @@ public class GitlabProperty {
|
|||||||
|
|
||||||
private String usersUrl;
|
private String usersUrl;
|
||||||
|
|
||||||
|
private String urlMergeRequestAdd;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,4 +115,16 @@ public class ProjectParser {
|
|||||||
.executeList(ProjectJson.class);
|
.executeList(ProjectJson.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void parseByUrl(String projectUrl) {
|
||||||
|
final Project project = HttpParse.request(projectUrl)
|
||||||
|
.header(ACCEPT)
|
||||||
|
.header(AUTHORIZATION, BEARER + personProperty.getToken())
|
||||||
|
.execute(ProjectJson.class)
|
||||||
|
.map(json -> conversionService.convert(json, Project.class))
|
||||||
|
.orElseThrow(() -> new ConvertException("Ошибка получения проекта"));
|
||||||
|
if (!projectService.existsById(project.getId())) {
|
||||||
|
projectService.create(project);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
package org.sadtech.bot.gitlab.telegram.unit;
|
package org.sadtech.bot.gitlab.telegram.unit;
|
||||||
|
|
||||||
import org.sadtech.bot.gitlab.context.domain.AppLocale;
|
|
||||||
import org.sadtech.bot.gitlab.context.service.AppSettingService;
|
import org.sadtech.bot.gitlab.context.service.AppSettingService;
|
||||||
|
import org.sadtech.bot.gitlab.core.config.properties.GitlabProperty;
|
||||||
|
import org.sadtech.bot.gitlab.core.service.parser.ProjectParser;
|
||||||
import org.sadtech.social.bot.domain.unit.AnswerText;
|
import org.sadtech.social.bot.domain.unit.AnswerText;
|
||||||
import org.sadtech.social.core.domain.BoxAnswer;
|
import org.sadtech.social.core.domain.BoxAnswer;
|
||||||
import org.sadtech.social.core.domain.keyboard.KeyBoard;
|
import org.sadtech.social.core.domain.keyboard.KeyBoard;
|
||||||
@@ -11,6 +12,11 @@ import org.sadtech.social.core.utils.KeyBoards;
|
|||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
import java.text.MessageFormat;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* // TODO: 16.01.2021 Добавить описание.
|
* // TODO: 16.01.2021 Добавить описание.
|
||||||
*
|
*
|
||||||
@@ -22,12 +28,12 @@ public class MenuConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public AnswerText menu(
|
public AnswerText menu(
|
||||||
AppSettingService settingService,
|
AppSettingService settingService,
|
||||||
AnswerText settings
|
AnswerText settings,
|
||||||
|
AnswerText textAddNewProject
|
||||||
) {
|
) {
|
||||||
return AnswerText.builder()
|
return AnswerText.builder()
|
||||||
.boxAnswer(message ->
|
.boxAnswer(message ->
|
||||||
{
|
{
|
||||||
|
|
||||||
final KeyBoardButtonText newMr = KeyBoardButtonText.builder().label(settingService.getMessage("ui.menu.add_mr")).build();
|
final KeyBoardButtonText newMr = KeyBoardButtonText.builder().label(settingService.getMessage("ui.menu.add_mr")).build();
|
||||||
final KeyBoardButtonText tasks = KeyBoardButtonText.builder().label(settingService.getMessage("ui.menu.task")).build();
|
final KeyBoardButtonText tasks = KeyBoardButtonText.builder().label(settingService.getMessage("ui.menu.task")).build();
|
||||||
final KeyBoardButtonText pr = KeyBoardButtonText.builder().label(settingService.getMessage("ui.menu.mr")).build();
|
final KeyBoardButtonText pr = KeyBoardButtonText.builder().label(settingService.getMessage("ui.menu.mr")).build();
|
||||||
@@ -59,6 +65,36 @@ public class MenuConfig {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
.nextUnit(settings)
|
.nextUnit(settings)
|
||||||
|
.nextUnit(textAddNewProject)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public AnswerText textAddNewProject(
|
||||||
|
AppSettingService settingService,
|
||||||
|
AnswerText addNewProject
|
||||||
|
) {
|
||||||
|
return AnswerText.builder()
|
||||||
|
.boxAnswer(BoxAnswer.processing(settingService.getMessage("ui.menu.add_mr.text")))
|
||||||
|
.phrase(settingService.getMessage("ui.menu.add_mr"))
|
||||||
|
.nextUnit(addNewProject)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public AnswerText addNewProject(
|
||||||
|
AppSettingService settingService,
|
||||||
|
ProjectParser projectParser,
|
||||||
|
GitlabProperty gitlabProperty
|
||||||
|
) {
|
||||||
|
return AnswerText.builder()
|
||||||
|
.boxAnswer(message -> {
|
||||||
|
final List<String> urlList = Arrays.stream(message.getText().split("/")).collect(Collectors.toList());
|
||||||
|
int lastElement = urlList.size() - 1;
|
||||||
|
final String projectUrl = MessageFormat.format(gitlabProperty.getUrlMergeRequestAdd(), urlList.get(lastElement - 1), urlList.get(lastElement));
|
||||||
|
projectParser.parseByUrl(projectUrl);
|
||||||
|
return BoxAnswer.of(settingService.getMessage("menu.add_project_success"));
|
||||||
|
})
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,37 +114,4 @@ public class MenuConfig {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
public AnswerText settingsLanguage(
|
|
||||||
AppSettingService settingService,
|
|
||||||
AnswerText setLanguage
|
|
||||||
) {
|
|
||||||
return AnswerText.builder()
|
|
||||||
.boxAnswer(message ->
|
|
||||||
BoxAnswer.builder()
|
|
||||||
.message(settingService.getMessage("ui.menu.setting.language.text"))
|
|
||||||
.keyBoard(KeyBoards.verticalDuoMenuString("Русский", "English"))
|
|
||||||
.build())
|
|
||||||
.nextUnit(setLanguage)
|
|
||||||
.phrase(settingService.getMessage("ui.menu.setting.language"))
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public AnswerText setLanguage(
|
|
||||||
AppSettingService settingService
|
|
||||||
) {
|
|
||||||
return AnswerText.builder()
|
|
||||||
.boxAnswer(
|
|
||||||
message -> {
|
|
||||||
final AppLocale appLocale = AppLocale.of(message.getText());
|
|
||||||
settingService.setLocale(appLocale);
|
|
||||||
return BoxAnswer.of(
|
|
||||||
settingService.getMessage("ui.lang_changed")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package org.sadtech.bot.gitlab.telegram.unit.menu;
|
||||||
|
|
||||||
|
import org.sadtech.bot.gitlab.context.domain.AppLocale;
|
||||||
|
import org.sadtech.bot.gitlab.context.service.AppSettingService;
|
||||||
|
import org.sadtech.social.bot.domain.unit.AnswerText;
|
||||||
|
import org.sadtech.social.core.domain.BoxAnswer;
|
||||||
|
import org.sadtech.social.core.utils.KeyBoards;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* // TODO: 16.01.2021 Добавить описание.
|
||||||
|
*
|
||||||
|
* @author upagge 16.01.2021
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class MenuSettingsConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public AnswerText settingsLanguage(
|
||||||
|
AppSettingService settingService,
|
||||||
|
AnswerText setLanguage
|
||||||
|
) {
|
||||||
|
return AnswerText.builder()
|
||||||
|
.boxAnswer(message ->
|
||||||
|
BoxAnswer.builder()
|
||||||
|
.message(settingService.getMessage("ui.menu.setting.language.text"))
|
||||||
|
.keyBoard(KeyBoards.verticalDuoMenuString("Русский", "English"))
|
||||||
|
.build())
|
||||||
|
.nextUnit(setLanguage)
|
||||||
|
.phrase(settingService.getMessage("ui.menu.setting.language"))
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public AnswerText setLanguage(
|
||||||
|
AppSettingService settingService
|
||||||
|
) {
|
||||||
|
return AnswerText.builder()
|
||||||
|
.boxAnswer(
|
||||||
|
message -> {
|
||||||
|
final AppLocale appLocale = AppLocale.of(message.getText());
|
||||||
|
settingService.setLocale(appLocale);
|
||||||
|
return BoxAnswer.of(
|
||||||
|
settingService.getMessage("ui.lang_changed")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user