From d2e1fdbfcbea50c7071ebe10079ca30634007c5f Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Fri, 23 Aug 2024 20:41:33 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BF=D0=BE=20=D0=BF=D0=B0=D0=BA?= =?UTF-8?q?=D0=B5=D1=82=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bot/gitlab/context/prop/AppProperty.java | 17 +++ .../gitlab/context/prop}/GitlabProperty.java | 6 +- .../gitlab/context/prop/PersonProperty.java | 17 +++ bot-core/pom.xml | 4 + .../bot/gitlab/core/config/CoreConfig.java | 16 --- .../core/config/properties/AppProperty.java | 21 --- .../config/properties/PersonProperty.java | 21 --- .../convert/DiscussionJsonConverter.java | 2 +- .../convert/MergeRequestJsonConverter.java | 2 +- .../convert/NoteJsonConvert.java | 2 +- .../convert/PersonJsonConverter.java | 2 +- .../convert/PipelineJsonConverter.java | 2 +- .../convert/ProjectJsonConverter.java | 2 +- .../parser/DiscussionParser.java | 6 +- .../parser/MergeRequestParser.java | 10 +- .../{service => }/parser/PipelineParser.java | 10 +- .../{service => }/parser/ProjectParser.java | 6 +- .../GetAllDiscussionForMergeRequestTask.java | 2 +- .../GetAllMergeRequestForProjectTask.java | 2 +- .../parser/forktask/GetPipelineShortTask.java | 2 +- .../parser/forktask/GetPipelineTask.java | 2 +- .../forktask/GetSingleMergeRequestTask.java | 2 +- .../{impl => }/AppSettingServiceImpl.java | 2 +- .../{impl => }/DiscussionServiceImpl.java | 6 +- .../{impl => }/MergeRequestsServiceImpl.java | 2 +- .../{impl/note => }/NoteServiceImpl.java | 2 +- .../service/{impl => }/NotifyServiceImpl.java | 2 +- .../service/{impl => }/PersonServiceImpl.java | 2 +- .../{impl => }/PipelineServiceImpl.java | 2 +- .../{impl => }/ProjectServiceImpl.java | 2 +- .../bot/gitlab/core/utils/HttpParse.java | 112 ++++++---------- .../bot/gitlab/core/utils/HttpParse2.java | 125 ++++++++++++++++++ .../bot/gitlab/config/AppConfig.java | 30 ++++- .../gitlab/scheduler/SchedulerService.java | 8 +- .../telegram/service/ErrorHandlerService.java | 2 +- .../telegram/service/ReplaceUrlLocalhost.java | 2 +- .../gitlab/telegram/service/StartNotify.java | 4 +- .../bot/gitlab/telegram/unit/MenuConfig.java | 4 +- .../telegram/unit/flow/InitSettingFlow.java | 8 +- 39 files changed, 286 insertions(+), 185 deletions(-) create mode 100644 bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/AppProperty.java rename {bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties => bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop}/GitlabProperty.java (85%) create mode 100644 bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/PersonProperty.java delete mode 100644 bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/CoreConfig.java delete mode 100644 bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/AppProperty.java delete mode 100644 bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/PersonProperty.java rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/convert/DiscussionJsonConverter.java (94%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/convert/MergeRequestJsonConverter.java (98%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/convert/NoteJsonConvert.java (95%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/convert/PersonJsonConverter.java (92%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/convert/PipelineJsonConverter.java (97%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/convert/ProjectJsonConverter.java (94%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/parser/DiscussionParser.java (97%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/parser/MergeRequestParser.java (96%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/parser/PipelineParser.java (95%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/parser/ProjectParser.java (96%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/parser/forktask/GetAllDiscussionForMergeRequestTask.java (96%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/parser/forktask/GetAllMergeRequestForProjectTask.java (96%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/parser/forktask/GetPipelineShortTask.java (97%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/parser/forktask/GetPipelineTask.java (95%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/{service => }/parser/forktask/GetSingleMergeRequestTask.java (94%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/{impl => }/AppSettingServiceImpl.java (98%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/{impl => }/DiscussionServiceImpl.java (98%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/{impl => }/MergeRequestsServiceImpl.java (99%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/{impl/note => }/NoteServiceImpl.java (95%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/{impl => }/NotifyServiceImpl.java (94%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/{impl => }/PersonServiceImpl.java (97%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/{impl => }/PipelineServiceImpl.java (99%) rename bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/{impl => }/ProjectServiceImpl.java (98%) create mode 100644 bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpParse2.java diff --git a/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/AppProperty.java b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/AppProperty.java new file mode 100644 index 0000000..d89ae0f --- /dev/null +++ b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/AppProperty.java @@ -0,0 +1,17 @@ +package dev.struchkov.bot.gitlab.context.prop; + +import lombok.Getter; +import lombok.Setter; + +/** + * Основные настройки приложения. + * + * @author upagge 11.10.2020 + */ +@Getter +@Setter +public class AppProperty { + + private String version; + +} diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/GitlabProperty.java b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/GitlabProperty.java similarity index 85% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/GitlabProperty.java rename to bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/GitlabProperty.java index d528dd7..3fafbb2 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/GitlabProperty.java +++ b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/GitlabProperty.java @@ -1,9 +1,7 @@ -package dev.struchkov.bot.gitlab.core.config.properties; +package dev.struchkov.bot.gitlab.context.prop; import lombok.Getter; import lombok.Setter; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; /** * Данные необходимые для взаимодействия с API GitLab. @@ -12,8 +10,6 @@ import org.springframework.stereotype.Component; */ @Getter @Setter -@Component -@ConfigurationProperties("gitlab-bot.gitlab") public class GitlabProperty { private String baseUrl; diff --git a/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/PersonProperty.java b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/PersonProperty.java new file mode 100644 index 0000000..bd50589 --- /dev/null +++ b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/PersonProperty.java @@ -0,0 +1,17 @@ +package dev.struchkov.bot.gitlab.context.prop; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author upagge 15.01.2021 + */ + +@Getter +@Setter +public class PersonProperty { + + private String token; + private String telegramId; + +} diff --git a/bot-core/pom.xml b/bot-core/pom.xml index b8ea4ad..44341a0 100644 --- a/bot-core/pom.xml +++ b/bot-core/pom.xml @@ -34,6 +34,10 @@ org.springframework.boot spring-boot-starter + + org.springframework.boot + spring-boot-starter-web + org.springframework.boot diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/CoreConfig.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/CoreConfig.java deleted file mode 100644 index 9ab69b3..0000000 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/CoreConfig.java +++ /dev/null @@ -1,16 +0,0 @@ -package dev.struchkov.bot.gitlab.core.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.concurrent.ForkJoinPool; - -@Configuration -public class CoreConfig { - - @Bean("parserPool") - public ForkJoinPool parserPool() { - return new ForkJoinPool(4); - } - -} diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/AppProperty.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/AppProperty.java deleted file mode 100644 index b8f8cb3..0000000 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/AppProperty.java +++ /dev/null @@ -1,21 +0,0 @@ -package dev.struchkov.bot.gitlab.core.config.properties; - -import lombok.Getter; -import lombok.Setter; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -/** - * Основные настройки приложения. - * - * @author upagge 11.10.2020 - */ -@Getter -@Setter -@Configuration -@ConfigurationProperties(prefix = "gitlab-bot") -public class AppProperty { - - private String version; - -} diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/PersonProperty.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/PersonProperty.java deleted file mode 100644 index 3d9d9f0..0000000 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/config/properties/PersonProperty.java +++ /dev/null @@ -1,21 +0,0 @@ -package dev.struchkov.bot.gitlab.core.config.properties; - -import lombok.Getter; -import lombok.Setter; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -/** - * @author upagge 15.01.2021 - */ - -@Getter -@Setter -@Configuration -@ConfigurationProperties(prefix = "gitlab-bot.person") -public class PersonProperty { - - private String token; - private String telegramId; - -} diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/DiscussionJsonConverter.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/DiscussionJsonConverter.java similarity index 94% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/DiscussionJsonConverter.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/DiscussionJsonConverter.java index abba232..86874b6 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/DiscussionJsonConverter.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/DiscussionJsonConverter.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.convert; +package dev.struchkov.bot.gitlab.core.convert; import dev.struchkov.bot.gitlab.context.domain.entity.Discussion; import dev.struchkov.bot.gitlab.sdk.domain.DiscussionJson; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/MergeRequestJsonConverter.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/MergeRequestJsonConverter.java similarity index 98% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/MergeRequestJsonConverter.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/MergeRequestJsonConverter.java index d966b17..fdb59dc 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/MergeRequestJsonConverter.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/MergeRequestJsonConverter.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.convert; +package dev.struchkov.bot.gitlab.core.convert; import dev.struchkov.bot.gitlab.context.domain.MergeRequestState; import dev.struchkov.bot.gitlab.context.domain.entity.MergeRequest; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/NoteJsonConvert.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/NoteJsonConvert.java similarity index 95% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/NoteJsonConvert.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/NoteJsonConvert.java index c09c003..385961e 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/NoteJsonConvert.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/NoteJsonConvert.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.convert; +package dev.struchkov.bot.gitlab.core.convert; import dev.struchkov.bot.gitlab.context.domain.entity.Note; import dev.struchkov.bot.gitlab.sdk.domain.NoteJson; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/PersonJsonConverter.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PersonJsonConverter.java similarity index 92% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/PersonJsonConverter.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PersonJsonConverter.java index 0761f85..c484af1 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/PersonJsonConverter.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PersonJsonConverter.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.convert; +package dev.struchkov.bot.gitlab.core.convert; import dev.struchkov.bot.gitlab.context.domain.entity.Person; import dev.struchkov.bot.gitlab.sdk.domain.PersonJson; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/PipelineJsonConverter.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PipelineJsonConverter.java similarity index 97% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/PipelineJsonConverter.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PipelineJsonConverter.java index a8bb621..ce1b22a 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/PipelineJsonConverter.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PipelineJsonConverter.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.convert; +package dev.struchkov.bot.gitlab.core.convert; import dev.struchkov.bot.gitlab.context.domain.PipelineStatus; import dev.struchkov.bot.gitlab.context.domain.entity.Pipeline; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/ProjectJsonConverter.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/ProjectJsonConverter.java similarity index 94% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/ProjectJsonConverter.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/ProjectJsonConverter.java index 85d4c70..5d98eaa 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/convert/ProjectJsonConverter.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/ProjectJsonConverter.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.convert; +package dev.struchkov.bot.gitlab.core.convert; import dev.struchkov.bot.gitlab.context.domain.entity.Project; import dev.struchkov.bot.gitlab.sdk.domain.ProjectJson; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/DiscussionParser.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/DiscussionParser.java similarity index 97% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/DiscussionParser.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/DiscussionParser.java index 8dea909..c399e1e 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/DiscussionParser.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/DiscussionParser.java @@ -1,14 +1,14 @@ -package dev.struchkov.bot.gitlab.core.service.parser; +package dev.struchkov.bot.gitlab.core.parser; import dev.struchkov.bot.gitlab.context.domain.ExistContainer; import dev.struchkov.bot.gitlab.context.domain.entity.Discussion; import dev.struchkov.bot.gitlab.context.domain.entity.MergeRequestForDiscussion; import dev.struchkov.bot.gitlab.context.domain.entity.Note; import dev.struchkov.bot.gitlab.context.domain.entity.Person; +import dev.struchkov.bot.gitlab.context.prop.GitlabProperty; +import dev.struchkov.bot.gitlab.context.prop.PersonProperty; import dev.struchkov.bot.gitlab.context.service.DiscussionService; import dev.struchkov.bot.gitlab.context.service.MergeRequestsService; -import dev.struchkov.bot.gitlab.core.config.properties.GitlabProperty; -import dev.struchkov.bot.gitlab.core.config.properties.PersonProperty; import dev.struchkov.bot.gitlab.core.utils.HttpParse; import dev.struchkov.bot.gitlab.sdk.domain.DiscussionJson; import lombok.extern.slf4j.Slf4j; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/MergeRequestParser.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/MergeRequestParser.java similarity index 96% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/MergeRequestParser.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/MergeRequestParser.java index 3822413..00140d1 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/MergeRequestParser.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/MergeRequestParser.java @@ -1,16 +1,16 @@ -package dev.struchkov.bot.gitlab.core.service.parser; +package dev.struchkov.bot.gitlab.core.parser; import dev.struchkov.bot.gitlab.context.domain.ExistContainer; import dev.struchkov.bot.gitlab.context.domain.IdAndStatusPr; import dev.struchkov.bot.gitlab.context.domain.MergeRequestState; import dev.struchkov.bot.gitlab.context.domain.entity.MergeRequest; import dev.struchkov.bot.gitlab.context.domain.entity.Person; +import dev.struchkov.bot.gitlab.context.prop.GitlabProperty; +import dev.struchkov.bot.gitlab.context.prop.PersonProperty; import dev.struchkov.bot.gitlab.context.service.MergeRequestsService; import dev.struchkov.bot.gitlab.context.service.ProjectService; -import dev.struchkov.bot.gitlab.core.config.properties.GitlabProperty; -import dev.struchkov.bot.gitlab.core.config.properties.PersonProperty; -import dev.struchkov.bot.gitlab.core.service.parser.forktask.GetAllMergeRequestForProjectTask; -import dev.struchkov.bot.gitlab.core.service.parser.forktask.GetSingleMergeRequestTask; +import dev.struchkov.bot.gitlab.core.parser.forktask.GetAllMergeRequestForProjectTask; +import dev.struchkov.bot.gitlab.core.parser.forktask.GetSingleMergeRequestTask; import dev.struchkov.bot.gitlab.core.utils.HttpParse; import dev.struchkov.bot.gitlab.core.utils.StringUtils; import dev.struchkov.bot.gitlab.sdk.domain.ApprovalContainerJson; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/PipelineParser.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/PipelineParser.java similarity index 95% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/PipelineParser.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/PipelineParser.java index 4da35ca..7d4979b 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/PipelineParser.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/PipelineParser.java @@ -1,14 +1,14 @@ -package dev.struchkov.bot.gitlab.core.service.parser; +package dev.struchkov.bot.gitlab.core.parser; import dev.struchkov.bot.gitlab.context.domain.ExistContainer; import dev.struchkov.bot.gitlab.context.domain.PipelineStatus; import dev.struchkov.bot.gitlab.context.domain.entity.Pipeline; +import dev.struchkov.bot.gitlab.context.prop.GitlabProperty; +import dev.struchkov.bot.gitlab.context.prop.PersonProperty; import dev.struchkov.bot.gitlab.context.service.PipelineService; import dev.struchkov.bot.gitlab.context.service.ProjectService; -import dev.struchkov.bot.gitlab.core.config.properties.GitlabProperty; -import dev.struchkov.bot.gitlab.core.config.properties.PersonProperty; -import dev.struchkov.bot.gitlab.core.service.parser.forktask.GetPipelineShortTask; -import dev.struchkov.bot.gitlab.core.service.parser.forktask.GetPipelineTask; +import dev.struchkov.bot.gitlab.core.parser.forktask.GetPipelineShortTask; +import dev.struchkov.bot.gitlab.core.parser.forktask.GetPipelineTask; import dev.struchkov.bot.gitlab.sdk.domain.PipelineJson; import dev.struchkov.bot.gitlab.sdk.domain.PipelineShortJson; import lombok.extern.slf4j.Slf4j; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/ProjectParser.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/ProjectParser.java similarity index 96% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/ProjectParser.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/ProjectParser.java index 925fcab..93c60d3 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/ProjectParser.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/ProjectParser.java @@ -1,13 +1,13 @@ -package dev.struchkov.bot.gitlab.core.service.parser; +package dev.struchkov.bot.gitlab.core.parser; import dev.struchkov.bot.gitlab.context.domain.ExistContainer; import dev.struchkov.bot.gitlab.context.domain.entity.Person; import dev.struchkov.bot.gitlab.context.domain.entity.Project; +import dev.struchkov.bot.gitlab.context.prop.GitlabProperty; +import dev.struchkov.bot.gitlab.context.prop.PersonProperty; import dev.struchkov.bot.gitlab.context.service.MergeRequestsService; import dev.struchkov.bot.gitlab.context.service.PersonService; import dev.struchkov.bot.gitlab.context.service.ProjectService; -import dev.struchkov.bot.gitlab.core.config.properties.GitlabProperty; -import dev.struchkov.bot.gitlab.core.config.properties.PersonProperty; import dev.struchkov.bot.gitlab.core.utils.HttpParse; import dev.struchkov.bot.gitlab.core.utils.StringUtils; import dev.struchkov.bot.gitlab.sdk.domain.PersonJson; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetAllDiscussionForMergeRequestTask.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllDiscussionForMergeRequestTask.java similarity index 96% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetAllDiscussionForMergeRequestTask.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllDiscussionForMergeRequestTask.java index 217137d..bf93b5a 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetAllDiscussionForMergeRequestTask.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllDiscussionForMergeRequestTask.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.parser.forktask; +package dev.struchkov.bot.gitlab.core.parser.forktask; import dev.struchkov.bot.gitlab.core.utils.HttpParse; import dev.struchkov.bot.gitlab.sdk.domain.DiscussionJson; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetAllMergeRequestForProjectTask.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllMergeRequestForProjectTask.java similarity index 96% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetAllMergeRequestForProjectTask.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllMergeRequestForProjectTask.java index 7c2e1e6..c8786ca 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetAllMergeRequestForProjectTask.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllMergeRequestForProjectTask.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.parser.forktask; +package dev.struchkov.bot.gitlab.core.parser.forktask; import dev.struchkov.bot.gitlab.core.utils.HttpParse; import dev.struchkov.bot.gitlab.core.utils.StringUtils; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetPipelineShortTask.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineShortTask.java similarity index 97% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetPipelineShortTask.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineShortTask.java index fe49360..33c69fd 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetPipelineShortTask.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineShortTask.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.parser.forktask; +package dev.struchkov.bot.gitlab.core.parser.forktask; import dev.struchkov.bot.gitlab.core.utils.HttpParse; import dev.struchkov.bot.gitlab.core.utils.StringUtils; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetPipelineTask.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineTask.java similarity index 95% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetPipelineTask.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineTask.java index 5da19dc..a287992 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetPipelineTask.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineTask.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.parser.forktask; +package dev.struchkov.bot.gitlab.core.parser.forktask; import dev.struchkov.bot.gitlab.core.utils.HttpParse; import dev.struchkov.bot.gitlab.core.utils.StringUtils; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetSingleMergeRequestTask.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetSingleMergeRequestTask.java similarity index 94% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetSingleMergeRequestTask.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetSingleMergeRequestTask.java index feb21f7..8022122 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetSingleMergeRequestTask.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetSingleMergeRequestTask.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.parser.forktask; +package dev.struchkov.bot.gitlab.core.parser.forktask; import dev.struchkov.bot.gitlab.core.utils.HttpParse; import dev.struchkov.bot.gitlab.core.utils.StringUtils; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/AppSettingServiceImpl.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/AppSettingServiceImpl.java similarity index 98% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/AppSettingServiceImpl.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/AppSettingServiceImpl.java index d2845fc..55115c9 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/AppSettingServiceImpl.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/AppSettingServiceImpl.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.impl; +package dev.struchkov.bot.gitlab.core.service; import dev.struchkov.bot.gitlab.context.domain.entity.AppSetting; import dev.struchkov.bot.gitlab.context.domain.notify.level.DiscussionLevel; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/DiscussionServiceImpl.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/DiscussionServiceImpl.java similarity index 98% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/DiscussionServiceImpl.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/DiscussionServiceImpl.java index f795710..c273711 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/DiscussionServiceImpl.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/DiscussionServiceImpl.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.impl; +package dev.struchkov.bot.gitlab.core.service; import dev.struchkov.bot.gitlab.context.domain.ExistContainer; import dev.struchkov.bot.gitlab.context.domain.PersonInformation; @@ -10,12 +10,12 @@ import dev.struchkov.bot.gitlab.context.domain.notify.comment.NewCommentNotify; import dev.struchkov.bot.gitlab.context.domain.notify.level.DiscussionLevel; import dev.struchkov.bot.gitlab.context.domain.notify.task.DiscussionNewNotify; import dev.struchkov.bot.gitlab.context.domain.notify.task.ThreadCloseNotify; +import dev.struchkov.bot.gitlab.context.prop.GitlabProperty; +import dev.struchkov.bot.gitlab.context.prop.PersonProperty; import dev.struchkov.bot.gitlab.context.repository.DiscussionRepository; import dev.struchkov.bot.gitlab.context.service.AppSettingService; import dev.struchkov.bot.gitlab.context.service.DiscussionService; import dev.struchkov.bot.gitlab.context.service.NotifyService; -import dev.struchkov.bot.gitlab.core.config.properties.GitlabProperty; -import dev.struchkov.bot.gitlab.core.config.properties.PersonProperty; import dev.struchkov.bot.gitlab.core.utils.StringUtils; import dev.struchkov.haiti.utils.container.Pair; import lombok.NonNull; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/MergeRequestsServiceImpl.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/MergeRequestsServiceImpl.java similarity index 99% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/MergeRequestsServiceImpl.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/MergeRequestsServiceImpl.java index 3fa0e3f..7f9aa5d 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/MergeRequestsServiceImpl.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/MergeRequestsServiceImpl.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.impl; +package dev.struchkov.bot.gitlab.core.service; import dev.struchkov.bot.gitlab.context.domain.AssigneeChanged; import dev.struchkov.bot.gitlab.context.domain.ExistContainer; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/note/NoteServiceImpl.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/NoteServiceImpl.java similarity index 95% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/note/NoteServiceImpl.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/NoteServiceImpl.java index 8243f0c..c3ed7c4 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/note/NoteServiceImpl.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/NoteServiceImpl.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.impl.note; +package dev.struchkov.bot.gitlab.core.service; import dev.struchkov.bot.gitlab.context.domain.entity.Note; import dev.struchkov.bot.gitlab.context.repository.NoteRepository; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/NotifyServiceImpl.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/NotifyServiceImpl.java similarity index 94% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/NotifyServiceImpl.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/NotifyServiceImpl.java index 336ad0b..d228c22 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/NotifyServiceImpl.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/NotifyServiceImpl.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.impl; +package dev.struchkov.bot.gitlab.core.service; import dev.struchkov.bot.gitlab.context.domain.notify.Notify; import dev.struchkov.bot.gitlab.context.service.AppSettingService; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/PersonServiceImpl.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/PersonServiceImpl.java similarity index 97% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/PersonServiceImpl.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/PersonServiceImpl.java index d96baf0..3ea260c 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/PersonServiceImpl.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/PersonServiceImpl.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.impl; +package dev.struchkov.bot.gitlab.core.service; import dev.struchkov.bot.gitlab.context.domain.ExistContainer; import dev.struchkov.bot.gitlab.context.domain.entity.Person; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/PipelineServiceImpl.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/PipelineServiceImpl.java similarity index 99% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/PipelineServiceImpl.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/PipelineServiceImpl.java index 739eab4..c6119fc 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/PipelineServiceImpl.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/PipelineServiceImpl.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.impl; +package dev.struchkov.bot.gitlab.core.service; import dev.struchkov.bot.gitlab.context.domain.ExistContainer; import dev.struchkov.bot.gitlab.context.domain.PersonInformation; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/ProjectServiceImpl.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/ProjectServiceImpl.java similarity index 98% rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/ProjectServiceImpl.java rename to bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/ProjectServiceImpl.java index 5210320..ece5899 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/ProjectServiceImpl.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/ProjectServiceImpl.java @@ -1,4 +1,4 @@ -package dev.struchkov.bot.gitlab.core.service.impl; +package dev.struchkov.bot.gitlab.core.service; import dev.struchkov.bot.gitlab.context.domain.ExistContainer; import dev.struchkov.bot.gitlab.context.domain.entity.Project; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpParse.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpParse.java index e86fed1..2e2c65a 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpParse.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpParse.java @@ -2,124 +2,98 @@ package dev.struchkov.bot.gitlab.core.utils; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import dev.struchkov.haiti.utils.Inspector; -import jakarta.validation.constraints.NotNull; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import okhttp3.ResponseBody; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; import java.io.IOException; import java.util.Collections; import java.util.List; import java.util.Optional; -import java.util.concurrent.TimeUnit; -import static dev.struchkov.haiti.utils.Checker.checkNotNull; -import static dev.struchkov.haiti.utils.Inspector.isNotNull; - -/** - * Утилитарный класс для работы с web. - * - * @author upagge 30.09.2020 - */ +@Component public class HttpParse { private static final Logger log = LoggerFactory.getLogger(HttpParse.class); - - public static final HttpHeader ACCEPT = HttpHeader.of("Accept", "text/html,application/xhtml+xml,application/json"); - private static final ObjectMapper objectMapper; - - private final Request.Builder requestBuilder = new Request.Builder(); - private final HttpUrl.Builder httpUrlBuilder; + private final HttpHeaders headers = new HttpHeaders(); + private final UriComponentsBuilder uriBuilder; static { objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } - public HttpParse(String url) { - Inspector.isNotNull(url); - httpUrlBuilder = HttpUrl.parse(url).newBuilder(); + private final RestTemplate restTemplate; + + public HttpParse(String url, RestTemplate restTemplate) { + this.restTemplate = restTemplate; + this.uriBuilder = UriComponentsBuilder.fromHttpUrl(url); } - public static HttpParse request(String url) { - Inspector.isNotNull(url); - return new HttpParse(url); + public static HttpParse request(String url, RestTemplate restTemplate) { + return new HttpParse(url, restTemplate); } public HttpParse header(String name, String value) { - isNotNull(name); - if (value != null) { - requestBuilder.header(name, value); + if (name != null && value != null) { + headers.add(name, value); } return this; } public HttpParse header(HttpHeader header) { - isNotNull(header); - requestBuilder.header(header.getName(), header.getValue()); + if (header != null) { + headers.add(header.getName(), header.getValue()); + } return this; } public HttpParse getParameter(String name, String value) { - isNotNull(name); - if (value != null) { - httpUrlBuilder.addQueryParameter(name, value); + if (name != null && value != null) { + uriBuilder.queryParam(name, value); } return this; } public Optional execute(Class classOfT) { - isNotNull(classOfT); - final HttpUrl url = httpUrlBuilder.build(); - final Request request = requestBuilder.url(url).build(); - log.trace("Выполняется okhttp3 запрос | {}", url); - final OkHttpClient httpClient = getNewClient(); - try (final Response execute = httpClient.newCall(request).execute()) { + try { + String url = uriBuilder.toUriString(); + log.trace("Выполняется RestTemplate запрос | {}", url); + HttpEntity entity = new HttpEntity<>(headers); + ResponseEntity response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class); log.trace("Запрос выполнен | {}", url); - if (execute.isSuccessful() && checkNotNull(execute.body())) { - final String string = execute.body().string(); - return Optional.ofNullable(objectMapper.readValue(string, classOfT)); + if (response.getStatusCode().is2xxSuccessful() && response.hasBody()) { + String body = response.getBody(); + return Optional.ofNullable(objectMapper.readValue(body, classOfT)); } } catch (IOException e) { - log.error("Ошибка выполнения okhttp3", e); + log.error("Ошибка выполнения RestTemplate", e); } return Optional.empty(); } - //TODO [16.01.2023|uPagge]: Okhttp Client создается на каждый запрос, что не рационально по потреблению ресурсов и производительности, но позволяет обойти ограничение со стороны гитлаба, при котором один и тот же клиент отбрасывался спустя 1000 запросов. Возможно стоит заменить OkHttp на что-то другое, например, RestTemplate public List executeList(Class classOfT) { - isNotNull(classOfT); - final HttpUrl url = httpUrlBuilder.build(); - final Request request = requestBuilder.url(url).build(); - log.trace("Выполняется okhttp3 запрос | {}", url); - final OkHttpClient httpClient = getNewClient(); - try (Response execute = httpClient.newCall(request).execute()) { + try { + String url = uriBuilder.toUriString(); + log.trace("Выполняется RestTemplate запрос | {}", url); + HttpEntity entity = new HttpEntity<>(headers); + ResponseEntity response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class); log.trace("Запрос выполнен | {}", url); - ResponseBody body = execute.body(); - if (execute.isSuccessful() && checkNotNull(body)) { - final String stringBody = body.string(); - final List list = objectMapper.readValue(stringBody, objectMapper.getTypeFactory().constructCollectionType(List.class, classOfT)); - return (list == null || list.isEmpty()) ? Collections.emptyList() : list; + if (response.getStatusCode().is2xxSuccessful() && response.hasBody()) { + String body = response.getBody(); + return objectMapper.readValue(body, objectMapper.getTypeFactory().constructCollectionType(List.class, classOfT)); } } catch (IOException e) { - log.error("Ошибка выполнения okhttp3", e); + log.error("Ошибка выполнения RestTemplate", e); } return Collections.emptyList(); } +} - @NotNull - private static OkHttpClient getNewClient() { - return new OkHttpClient().newBuilder() - .connectTimeout(30, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .writeTimeout(30, TimeUnit.SECONDS) - .build(); - } - -} \ No newline at end of file diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpParse2.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpParse2.java new file mode 100644 index 0000000..9563e66 --- /dev/null +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpParse2.java @@ -0,0 +1,125 @@ +//package dev.struchkov.bot.gitlab.core.utils; +// +//import com.fasterxml.jackson.databind.DeserializationFeature; +//import com.fasterxml.jackson.databind.ObjectMapper; +//import dev.struchkov.haiti.utils.Inspector; +//import jakarta.validation.constraints.NotNull; +//import okhttp3.HttpUrl; +//import okhttp3.OkHttpClient; +//import okhttp3.Request; +//import okhttp3.Response; +//import okhttp3.ResponseBody; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +// +//import java.io.IOException; +//import java.util.Collections; +//import java.util.List; +//import java.util.Optional; +//import java.util.concurrent.TimeUnit; +// +//import static dev.struchkov.haiti.utils.Checker.checkNotNull; +//import static dev.struchkov.haiti.utils.Inspector.isNotNull; +// +///** +// * Утилитарный класс для работы с web. +// * +// * @author upagge 30.09.2020 +// */ +//public class HttpParse { +// +// private static final Logger log = LoggerFactory.getLogger(HttpParse.class); +// +// public static final HttpHeader ACCEPT = HttpHeader.of("Accept", "text/html,application/xhtml+xml,application/json"); +// +// private static final ObjectMapper objectMapper; +// +// private final Request.Builder requestBuilder = new Request.Builder(); +// private final HttpUrl.Builder httpUrlBuilder; +// +// static { +// objectMapper = new ObjectMapper(); +// objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); +// } +// +// public HttpParse(String url) { +// Inspector.isNotNull(url); +// httpUrlBuilder = HttpUrl.parse(url).newBuilder(); +// } +// +// public static HttpParse request(String url) { +// Inspector.isNotNull(url); +// return new HttpParse(url); +// } +// +// public HttpParse header(String name, String value) { +// isNotNull(name); +// if (value != null) { +// requestBuilder.header(name, value); +// } +// return this; +// } +// +// public HttpParse header(HttpHeader header) { +// isNotNull(header); +// requestBuilder.header(header.getName(), header.getValue()); +// return this; +// } +// +// public HttpParse getParameter(String name, String value) { +// isNotNull(name); +// if (value != null) { +// httpUrlBuilder.addQueryParameter(name, value); +// } +// return this; +// } +// +// public Optional execute(Class classOfT) { +// isNotNull(classOfT); +// final HttpUrl url = httpUrlBuilder.build(); +// final Request request = requestBuilder.url(url).build(); +// log.trace("Выполняется okhttp3 запрос | {}", url); +// final OkHttpClient httpClient = getNewClient(); +// try (final Response execute = httpClient.newCall(request).execute()) { +// log.trace("Запрос выполнен | {}", url); +// if (execute.isSuccessful() && checkNotNull(execute.body())) { +// final String string = execute.body().string(); +// return Optional.ofNullable(objectMapper.readValue(string, classOfT)); +// } +// } catch (IOException e) { +// log.error("Ошибка выполнения okhttp3", e); +// } +// return Optional.empty(); +// } +// +// //TODO [16.01.2023|uPagge]: Okhttp Client создается на каждый запрос, что не рационально по потреблению ресурсов и производительности, но позволяет обойти ограничение со стороны гитлаба, при котором один и тот же клиент отбрасывался спустя 1000 запросов. Возможно стоит заменить OkHttp на что-то другое, например, RestTemplate +// public List executeList(Class classOfT) { +// isNotNull(classOfT); +// final HttpUrl url = httpUrlBuilder.build(); +// final Request request = requestBuilder.url(url).build(); +// log.trace("Выполняется okhttp3 запрос | {}", url); +// final OkHttpClient httpClient = getNewClient(); +// try (Response execute = httpClient.newCall(request).execute()) { +// log.trace("Запрос выполнен | {}", url); +// ResponseBody body = execute.body(); +// if (execute.isSuccessful() && checkNotNull(body)) { +// final String stringBody = body.string(); +// final List list = objectMapper.readValue(stringBody, objectMapper.getTypeFactory().constructCollectionType(List.class, classOfT)); +// return (list == null || list.isEmpty()) ? Collections.emptyList() : list; +// } +// } catch (IOException e) { +// log.error("Ошибка выполнения okhttp3", e); +// } +// return Collections.emptyList(); +// } +// +// @NotNull +// private static OkHttpClient getNewClient() { +// return new OkHttpClient().newBuilder() +// .connectTimeout(30, TimeUnit.SECONDS) +// .readTimeout(30, TimeUnit.SECONDS) +// .writeTimeout(30, TimeUnit.SECONDS) +// .build(); +// } +// +//} \ No newline at end of file diff --git a/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/config/AppConfig.java b/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/config/AppConfig.java index 2cb6582..3767b71 100644 --- a/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/config/AppConfig.java +++ b/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/config/AppConfig.java @@ -1,10 +1,12 @@ package dev.struchkov.bot.gitlab.config; import dev.struchkov.bot.gitlab.context.domain.PersonInformation; -import dev.struchkov.bot.gitlab.core.config.properties.GitlabProperty; -import dev.struchkov.bot.gitlab.core.config.properties.PersonProperty; +import dev.struchkov.bot.gitlab.context.prop.AppProperty; +import dev.struchkov.bot.gitlab.context.prop.GitlabProperty; +import dev.struchkov.bot.gitlab.context.prop.PersonProperty; import dev.struchkov.bot.gitlab.core.utils.HttpParse; import dev.struchkov.bot.gitlab.core.utils.StringUtils; +import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.ConversionService; @@ -13,6 +15,7 @@ import org.springframework.core.convert.support.DefaultConversionService; import org.springframework.scheduling.annotation.EnableScheduling; import java.util.Arrays; +import java.util.concurrent.ForkJoinPool; import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT; import static dev.struchkov.haiti.context.exception.NotFoundException.notFoundException; @@ -36,6 +39,29 @@ public class AppConfig { // return taskScheduler; // } + @Bean + @ConfigurationProperties(prefix = "gitlab-bot") + public AppProperty appProperty() { + return new AppProperty(); + } + + @Bean + @ConfigurationProperties("gitlab-bot.gitlab") + public GitlabProperty gitlabProperty() { + return new GitlabProperty(); + } + + @Bean + @ConfigurationProperties(prefix = "gitlab-bot.person") + public PersonProperty personProperty() { + return new PersonProperty(); + } + + @Bean("parserPool") + public ForkJoinPool parserPool() { + return new ForkJoinPool(4); + } + @Bean public ConversionService conversionService(Converter... converters) { final DefaultConversionService defaultConversionService = new DefaultConversionService(); diff --git a/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/scheduler/SchedulerService.java b/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/scheduler/SchedulerService.java index 4e9f74d..6bf7da0 100644 --- a/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/scheduler/SchedulerService.java +++ b/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/scheduler/SchedulerService.java @@ -4,10 +4,10 @@ import dev.struchkov.bot.gitlab.context.service.AppSettingService; import dev.struchkov.bot.gitlab.context.service.DiscussionService; import dev.struchkov.bot.gitlab.context.service.MergeRequestsService; import dev.struchkov.bot.gitlab.context.service.PipelineService; -import dev.struchkov.bot.gitlab.core.service.parser.DiscussionParser; -import dev.struchkov.bot.gitlab.core.service.parser.MergeRequestParser; -import dev.struchkov.bot.gitlab.core.service.parser.PipelineParser; -import dev.struchkov.bot.gitlab.core.service.parser.ProjectParser; +import dev.struchkov.bot.gitlab.core.parser.DiscussionParser; +import dev.struchkov.bot.gitlab.core.parser.MergeRequestParser; +import dev.struchkov.bot.gitlab.core.parser.PipelineParser; +import dev.struchkov.bot.gitlab.core.parser.ProjectParser; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/ErrorHandlerService.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/ErrorHandlerService.java index 2fa5428..b4c7ef0 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/ErrorHandlerService.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/ErrorHandlerService.java @@ -1,6 +1,6 @@ package dev.struchkov.bot.gitlab.telegram.service; -import dev.struchkov.bot.gitlab.core.config.properties.PersonProperty; +import dev.struchkov.bot.gitlab.context.prop.PersonProperty; import dev.struchkov.godfather.main.domain.content.Message; import dev.struchkov.godfather.simple.context.service.ErrorHandler; import dev.struchkov.godfather.simple.domain.BoxAnswer; diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/ReplaceUrlLocalhost.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/ReplaceUrlLocalhost.java index 3ca9768..530b712 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/ReplaceUrlLocalhost.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/ReplaceUrlLocalhost.java @@ -1,6 +1,6 @@ package dev.struchkov.bot.gitlab.telegram.service; -import dev.struchkov.bot.gitlab.core.config.properties.GitlabProperty; +import dev.struchkov.bot.gitlab.context.prop.GitlabProperty; import dev.struchkov.godfather.simple.domain.BoxAnswer; import dev.struchkov.godfather.simple.domain.action.PreSendProcessing; import lombok.RequiredArgsConstructor; diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/StartNotify.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/StartNotify.java index 78756ac..f49f080 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/StartNotify.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/StartNotify.java @@ -1,9 +1,9 @@ package dev.struchkov.bot.gitlab.telegram.service; +import dev.struchkov.bot.gitlab.context.prop.AppProperty; +import dev.struchkov.bot.gitlab.context.prop.PersonProperty; import dev.struchkov.bot.gitlab.context.service.AppSettingService; import dev.struchkov.bot.gitlab.context.utils.Icons; -import dev.struchkov.bot.gitlab.core.config.properties.AppProperty; -import dev.struchkov.bot.gitlab.core.config.properties.PersonProperty; import dev.struchkov.godfather.simple.domain.BoxAnswer; import dev.struchkov.godfather.telegram.domain.ClientBotCommand; import dev.struchkov.godfather.telegram.simple.context.service.TelegramSending; diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/unit/MenuConfig.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/unit/MenuConfig.java index f3fd657..572d034 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/unit/MenuConfig.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/unit/MenuConfig.java @@ -3,13 +3,13 @@ package dev.struchkov.bot.gitlab.telegram.unit; import dev.struchkov.bot.gitlab.context.domain.PersonInformation; import dev.struchkov.bot.gitlab.context.domain.entity.MergeRequest; import dev.struchkov.bot.gitlab.context.domain.entity.Project; +import dev.struchkov.bot.gitlab.context.prop.GitlabProperty; import dev.struchkov.bot.gitlab.context.service.AppSettingService; import dev.struchkov.bot.gitlab.context.service.MergeRequestsService; import dev.struchkov.bot.gitlab.context.service.NoteService; import dev.struchkov.bot.gitlab.context.service.ProjectService; import dev.struchkov.bot.gitlab.context.utils.Icons; -import dev.struchkov.bot.gitlab.core.config.properties.GitlabProperty; -import dev.struchkov.bot.gitlab.core.service.parser.ProjectParser; +import dev.struchkov.bot.gitlab.core.parser.ProjectParser; import dev.struchkov.bot.gitlab.telegram.utils.UnitName; import dev.struchkov.godfather.main.domain.annotation.Unit; import dev.struchkov.godfather.main.domain.content.Mail; diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/unit/flow/InitSettingFlow.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/unit/flow/InitSettingFlow.java index bf035d7..446fc83 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/unit/flow/InitSettingFlow.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/unit/flow/InitSettingFlow.java @@ -7,10 +7,10 @@ import dev.struchkov.bot.gitlab.context.service.DiscussionService; import dev.struchkov.bot.gitlab.context.service.MergeRequestsService; import dev.struchkov.bot.gitlab.context.service.PipelineService; import dev.struchkov.bot.gitlab.context.service.ProjectService; -import dev.struchkov.bot.gitlab.core.service.parser.DiscussionParser; -import dev.struchkov.bot.gitlab.core.service.parser.MergeRequestParser; -import dev.struchkov.bot.gitlab.core.service.parser.PipelineParser; -import dev.struchkov.bot.gitlab.core.service.parser.ProjectParser; +import dev.struchkov.bot.gitlab.core.parser.DiscussionParser; +import dev.struchkov.bot.gitlab.core.parser.MergeRequestParser; +import dev.struchkov.bot.gitlab.core.parser.PipelineParser; +import dev.struchkov.bot.gitlab.core.parser.ProjectParser; import dev.struchkov.godfather.main.domain.annotation.Unit; import dev.struchkov.godfather.main.domain.content.Mail; import dev.struchkov.godfather.main.domain.content.Message;