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
index bd50589..aa5abaa 100644
--- 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
@@ -11,7 +11,6 @@ import lombok.Setter;
@Setter
public class PersonProperty {
- private String token;
private String telegramId;
}
diff --git a/bot-core/pom.xml b/bot-core/pom.xml
index 44341a0..380e482 100644
--- a/bot-core/pom.xml
+++ b/bot-core/pom.xml
@@ -67,10 +67,7 @@
true
-
- com.squareup.okhttp3
- okhttp
-
+
com.fasterxml.jackson.core
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/DiscussionJsonConverter.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/DiscussionJsonConverter.java
index 86874b6..a245a23 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/DiscussionJsonConverter.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/DiscussionJsonConverter.java
@@ -1,7 +1,7 @@
package dev.struchkov.bot.gitlab.core.convert;
import dev.struchkov.bot.gitlab.context.domain.entity.Discussion;
-import dev.struchkov.bot.gitlab.sdk.domain.DiscussionJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.DiscussionJson;
import lombok.RequiredArgsConstructor;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/MergeRequestJsonConverter.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/MergeRequestJsonConverter.java
index fdb59dc..946ae4b 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/MergeRequestJsonConverter.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/MergeRequestJsonConverter.java
@@ -3,9 +3,9 @@ package dev.struchkov.bot.gitlab.core.convert;
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.sdk.domain.MergeRequestJson;
-import dev.struchkov.bot.gitlab.sdk.domain.MergeRequestStateJson;
-import dev.struchkov.bot.gitlab.sdk.domain.PersonJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.MergeRequestJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.MergeRequestStateJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.PersonJson;
import lombok.RequiredArgsConstructor;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/NoteJsonConvert.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/NoteJsonConvert.java
index 385961e..b9e171d 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/NoteJsonConvert.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/NoteJsonConvert.java
@@ -1,7 +1,7 @@
package dev.struchkov.bot.gitlab.core.convert;
import dev.struchkov.bot.gitlab.context.domain.entity.Note;
-import dev.struchkov.bot.gitlab.sdk.domain.NoteJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.NoteJson;
import lombok.RequiredArgsConstructor;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PersonJsonConverter.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PersonJsonConverter.java
index c484af1..1c318dd 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PersonJsonConverter.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PersonJsonConverter.java
@@ -1,7 +1,7 @@
package dev.struchkov.bot.gitlab.core.convert;
import dev.struchkov.bot.gitlab.context.domain.entity.Person;
-import dev.struchkov.bot.gitlab.sdk.domain.PersonJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.PersonJson;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PipelineJsonConverter.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PipelineJsonConverter.java
index ce1b22a..6bfc98f 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PipelineJsonConverter.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/PipelineJsonConverter.java
@@ -2,8 +2,8 @@ package dev.struchkov.bot.gitlab.core.convert;
import dev.struchkov.bot.gitlab.context.domain.PipelineStatus;
import dev.struchkov.bot.gitlab.context.domain.entity.Pipeline;
-import dev.struchkov.bot.gitlab.sdk.domain.PipelineJson;
-import dev.struchkov.bot.gitlab.sdk.domain.PipelineStatusJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.PipelineJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.PipelineStatusJson;
import lombok.RequiredArgsConstructor;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/ProjectJsonConverter.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/ProjectJsonConverter.java
index 5d98eaa..e187226 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/ProjectJsonConverter.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/convert/ProjectJsonConverter.java
@@ -1,7 +1,7 @@
package dev.struchkov.bot.gitlab.core.convert;
import dev.struchkov.bot.gitlab.context.domain.entity.Project;
-import dev.struchkov.bot.gitlab.sdk.domain.ProjectJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.ProjectJson;
import lombok.RequiredArgsConstructor;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/DiscussionParser.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/DiscussionParser.java
index c399e1e..2c8d4cc 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/DiscussionParser.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/DiscussionParser.java
@@ -5,14 +5,13 @@ 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.utils.HttpParse;
-import dev.struchkov.bot.gitlab.sdk.domain.DiscussionJson;
+import dev.struchkov.bot.gitlab.sdk.GitlabSdkManager;
+import dev.struchkov.bot.gitlab.sdk.config.GitlabProperty;
+import dev.struchkov.bot.gitlab.sdk.domain.json.DiscussionJson;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.convert.ConversionService;
import org.springframework.stereotype.Component;
@@ -21,15 +20,11 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import java.util.Optional;
import java.util.Set;
-import java.util.concurrent.ForkJoinPool;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT;
-import static dev.struchkov.bot.gitlab.core.utils.StringUtils.H_PRIVATE_TOKEN;
import static dev.struchkov.haiti.utils.Checker.checkFalse;
import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
import static dev.struchkov.haiti.utils.Checker.checkNotNull;
@@ -41,35 +36,20 @@ import static dev.struchkov.haiti.utils.Checker.checkNotNull;
*/
@Slf4j
@Component
+@RequiredArgsConstructor
public class DiscussionParser {
public static final int PAGE_COUNT = 100;
+ //TODO [23.08.2024|uPagge]: Убрать
+ private final GitlabProperty gitlabProperty;
+ private final GitlabSdkManager gitlabSdkManager;
+
private final DiscussionService discussionService;
private final MergeRequestsService mergeRequestsService;
private final ConversionService conversionService;
- private final ForkJoinPool forkJoinPool;
- private final GitlabProperty gitlabProperty;
-
- private final PersonProperty personProperty;
-
- public DiscussionParser(
- DiscussionService discussionService,
- MergeRequestsService mergeRequestsService,
- ConversionService conversionService,
- @Qualifier("parserPool") ForkJoinPool forkJoinPool,
- GitlabProperty gitlabProperty,
- PersonProperty personProperty
- ) {
- this.discussionService = discussionService;
- this.mergeRequestsService = mergeRequestsService;
- this.conversionService = conversionService;
- this.forkJoinPool = forkJoinPool;
- this.gitlabProperty = gitlabProperty;
- this.personProperty = personProperty;
- }
/**
* Поиск новых обсуждений
@@ -85,11 +65,11 @@ public class DiscussionParser {
private void processingNewDiscussion(MergeRequestForDiscussion mergeRequest) {
int page = 1;
- final List discussionJson = getDiscussionJson(mergeRequest, page);
+ final List discussionJson = gitlabSdkManager.getDiscussionForMergeRequest(mergeRequest.getProjectId(), mergeRequest.getTwoId(), page);
if (checkNotEmpty(discussionJson)) {
while (discussionJson.size() == PAGE_COUNT) {
- discussionJson.addAll(getDiscussionJson(mergeRequest, ++page));
+ discussionJson.addAll(gitlabSdkManager.getDiscussionForMergeRequest(mergeRequest.getProjectId(), mergeRequest.getTwoId(), ++page));
}
createNewDiscussion(discussionJson, mergeRequest);
}
@@ -170,11 +150,12 @@ public class DiscussionParser {
final List newDiscussions = new ArrayList<>();
for (Discussion discussion : discussions) {
- if (checkNotNull(discussion.getMergeRequest())) {
- getOldDiscussionJson(discussion)
+ final MergeRequestForDiscussion mergeRequest = discussion.getMergeRequest();
+ if (checkNotNull(mergeRequest)) {
+ gitlabSdkManager.getDiscussionById(mergeRequest.getProjectId(), mergeRequest.getTwoId(), discussion.getId())
.map(json -> {
final Discussion newDiscussion = conversionService.convert(json, Discussion.class);
- newDiscussion.getNotes().forEach(createNoteLink(discussion.getMergeRequest()));
+ newDiscussion.getNotes().forEach(createNoteLink(mergeRequest));
return newDiscussion;
}).ifPresent(newDiscussions::add);
} else {
@@ -190,29 +171,6 @@ public class DiscussionParser {
log.debug("Конец обработки старых дискуссий");
}
- private Optional getOldDiscussionJson(Discussion discussion) {
- return HttpParse.request(createLinkOldDiscussion(discussion))
- .header(ACCEPT)
- .header(H_PRIVATE_TOKEN, personProperty.getToken())
- .execute(DiscussionJson.class);
- }
-
- private String createLinkOldDiscussion(Discussion discussion) {
- return MessageFormat.format(
- gitlabProperty.getDiscussionUrl(),
- discussion.getMergeRequest().getProjectId(),
- discussion.getMergeRequest().getTwoId(),
- discussion.getId()
- );
- }
-
- private List getDiscussionJson(MergeRequestForDiscussion mergeRequest, int page) {
- return HttpParse.request(MessageFormat.format(gitlabProperty.getDiscussionsUrl(), mergeRequest.getProjectId(), mergeRequest.getTwoId(), page, PAGE_COUNT))
- .header(ACCEPT)
- .header(H_PRIVATE_TOKEN, personProperty.getToken())
- .executeList(DiscussionJson.class);
- }
-
private Consumer createNoteLink(MergeRequestForDiscussion mergeRequest) {
return note -> {
final String url = MessageFormat.format(
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/MergeRequestParser.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/MergeRequestParser.java
index 00140d1..9a39b24 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/MergeRequestParser.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/MergeRequestParser.java
@@ -1,89 +1,61 @@
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.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;
-import dev.struchkov.bot.gitlab.sdk.domain.ApprovalJson;
-import dev.struchkov.bot.gitlab.sdk.domain.CommitJson;
-import dev.struchkov.bot.gitlab.sdk.domain.MergeRequestJson;
+import dev.struchkov.bot.gitlab.sdk.GitlabSdkManager;
+import dev.struchkov.bot.gitlab.sdk.domain.json.ApprovalJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.CommitJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.MergeRequestJson;
+import dev.struchkov.haiti.utils.container.Pair;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.convert.ConversionService;
import org.springframework.stereotype.Service;
-import java.text.MessageFormat;
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import java.util.Optional;
import java.util.Set;
-import java.util.concurrent.ForkJoinPool;
-import java.util.concurrent.ForkJoinTask;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT;
-import static dev.struchkov.haiti.context.exception.ConvertException.convertException;
import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
import static dev.struchkov.haiti.utils.Checker.checkNotNull;
-import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResult;
-import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResults;
+import static java.util.stream.Collectors.toList;
@Slf4j
@Service
+@RequiredArgsConstructor
public class MergeRequestParser {
private static final Set OLD_STATUSES = Set.of(
MergeRequestState.MERGED, MergeRequestState.OPENED, MergeRequestState.CLOSED
);
- private final GitlabProperty gitlabProperty;
+ private final GitlabSdkManager gitlabSdkManager;
+
private final MergeRequestsService mergeRequestsService;
private final ProjectService projectService;
private final ConversionService conversionService;
- private final PersonProperty personProperty;
-
- private final ForkJoinPool forkJoinPool;
-
- public MergeRequestParser(
- GitlabProperty gitlabProperty,
- MergeRequestsService mergeRequestsService,
- ProjectService projectService,
- ConversionService conversionService,
- PersonProperty personProperty,
- @Qualifier("parserPool") ForkJoinPool forkJoinPool
- ) {
- this.gitlabProperty = gitlabProperty;
- this.mergeRequestsService = mergeRequestsService;
- this.projectService = projectService;
- this.conversionService = conversionService;
- this.personProperty = personProperty;
- this.forkJoinPool = forkJoinPool;
- }
public void parsingOldMergeRequest() {
log.debug("Старт обработки старых MR");
- final Set existIds = mergeRequestsService.getAllId(OLD_STATUSES);
+ final Set> existIds = mergeRequestsService.getAllId(OLD_STATUSES).stream()
+ .map(idAndStatusPr -> new Pair<>(idAndStatusPr.getProjectId(), idAndStatusPr.getTwoId()))
+ .collect(Collectors.toSet());
- final List newMergeRequests = getOldMergeRequests(existIds).stream()
+ final List newMergeRequests = gitlabSdkManager.getAllMergeRequestById(existIds).stream()
.map(mergeRequestJson -> {
final MergeRequest newMergeRequest = conversionService.convert(mergeRequestJson, MergeRequest.class);
parsingCommits(newMergeRequest);
parsingApprovals(newMergeRequest);
return newMergeRequest;
})
- .collect(Collectors.toList());
+ .collect(toList());
if (checkNotEmpty(newMergeRequests)) {
personMapping(newMergeRequests);
@@ -92,28 +64,11 @@ public class MergeRequestParser {
log.debug("Конец обработки старых MR");
}
- private List getOldMergeRequests(Set existIds) {
- final List>> tasks = existIds.stream()
- .map(
- existId -> new GetSingleMergeRequestTask(
- gitlabProperty.getMergeRequestUrl(),
- existId.getProjectId(),
- existId.getTwoId(),
- personProperty.getToken()
- )
- ).map(forkJoinPool::submit)
- .collect(Collectors.toList());
-
- return pullTaskResult(tasks).stream()
- .flatMap(Optional::stream)
- .collect(Collectors.toList());
- }
-
public void parsingNewMergeRequest() {
log.debug("Старт обработки новых MR");
final Set projectIds = projectService.getAllIdByProcessingEnable();
- final List mergeRequestJsons = getMergeRequests(projectIds);
+ final List mergeRequestJsons = gitlabSdkManager.getAllMergeRequestByProjectIds(projectIds);
if (checkNotEmpty(mergeRequestJsons)) {
final Set jsonIds = mergeRequestJsons.stream()
@@ -143,20 +98,6 @@ public class MergeRequestParser {
log.debug("Конец обработки новых MR");
}
- /**
- * Позволяет получить MR для переданных идентификаторов проектов.
- *
- * @param projectIds идентификаторы проектов
- * @return полученные у GitLab MergeRequests
- */
- private List getMergeRequests(Set projectIds) {
- final List>> tasks = projectIds.stream()
- .map(projectId -> new GetAllMergeRequestForProjectTask(projectId, gitlabProperty.getOpenMergeRequestsUrl(), personProperty.getToken()))
- .map(forkJoinPool::submit)
- .collect(Collectors.toList());
-
- return pullTaskResults(tasks);
- }
private static void personMapping(List newMergeRequests) {
final Map personMap = Stream.concat(
@@ -179,19 +120,14 @@ public class MergeRequestParser {
newMergeRequest.setReviewers(
newMergeRequest.getReviewers().stream()
.map(reviewer -> personMap.get(reviewer.getId()))
- .collect(Collectors.toList())
+ .collect(toList())
);
}
}
//TODO [19.01.2024|uPagge]: Переделать в многопоточный режим
private void parsingCommits(MergeRequest mergeRequest) {
- final List commitJson = HttpParse.request(
- MessageFormat.format(gitlabProperty.getLastCommitOfMergeRequestUrl(), mergeRequest.getProjectId(), mergeRequest.getTwoId())
- )
- .header(ACCEPT)
- .header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
- .executeList(CommitJson.class);
+ final List commitJson = gitlabSdkManager.getAllCommitByProjectId(mergeRequest.getProjectId(), mergeRequest.getTwoId());
if (checkNotEmpty(commitJson)) {
mergeRequest.setDateLastCommit(commitJson.get(0).getCreatedDate());
}
@@ -199,22 +135,13 @@ public class MergeRequestParser {
//TODO [19.01.2024|uPagge]: Переделать в многопоточный режим
private void parsingApprovals(MergeRequest mergeRequest) {
- final ApprovalContainerJson approvalContainer = HttpParse.request(
- MessageFormat.format(gitlabProperty.getMergeRequestApprovalUrl(), mergeRequest.getProjectId(), mergeRequest.getTwoId())
- )
- .header(ACCEPT)
- .header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
- .execute(ApprovalContainerJson.class)
- .orElseThrow(convertException("Error request approvals"));
+ final List personApprovals = gitlabSdkManager.getAllApprovalForMergeRequest(mergeRequest.getProjectId(), mergeRequest.getTwoId()).stream()
+ .map(ApprovalJson::getUser)
+ .map(personJson -> conversionService.convert(personJson, Person.class))
+ .collect(toList());
-
-
- if (checkNotEmpty(approvalContainer.getApprovals())) {
- final List approvals = approvalContainer.getApprovals().stream()
- .map(ApprovalJson::getUser)
- .map(personJson -> conversionService.convert(personJson, Person.class))
- .collect(Collectors.toList());
- mergeRequest.setApprovals(approvals);
+ if (checkNotEmpty(personApprovals)) {
+ mergeRequest.setApprovals(personApprovals);
}
}
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/PipelineParser.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/PipelineParser.java
index 7d4979b..5a0f1e5 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/PipelineParser.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/PipelineParser.java
@@ -3,26 +3,20 @@ 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.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 dev.struchkov.bot.gitlab.sdk.GitlabSdkManager;
+import dev.struchkov.bot.gitlab.sdk.domain.json.PipelineShortJson;
+import dev.struchkov.haiti.utils.container.Pair;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.convert.ConversionService;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
-import java.util.concurrent.ForkJoinPool;
-import java.util.concurrent.ForkJoinTask;
import java.util.stream.Collectors;
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.CREATED;
@@ -33,9 +27,8 @@ import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.RUNNING;
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.WAITING_FOR_RESOURCE;
import static dev.struchkov.haiti.utils.Checker.checkFalse;
import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
-import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResult;
-import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResults;
import static java.util.stream.Collectors.toMap;
+import static java.util.stream.Collectors.toSet;
/**
* Парсер пайплайнов.
@@ -44,37 +37,21 @@ import static java.util.stream.Collectors.toMap;
*/
@Slf4j
@Service
+@RequiredArgsConstructor
public class PipelineParser {
private static final Set oldStatus = Set.of(
CREATED, WAITING_FOR_RESOURCE, PREPARING, PENDING, RUNNING, MANUAL
);
+ private final GitlabSdkManager gitlabSdkManager;
+
private final PipelineService pipelineService;
private final ProjectService projectService;
- private final GitlabProperty gitlabProperty;
- private final PersonProperty personProperty;
private final ConversionService conversionService;
- private final ForkJoinPool forkJoinPool;
private LocalDateTime lastUpdate = LocalDateTime.now();
- public PipelineParser(
- PipelineService pipelineService,
- ProjectService projectService,
- GitlabProperty gitlabProperty,
- PersonProperty personProperty,
- ConversionService conversionService,
- @Qualifier("parserPool") ForkJoinPool forkJoinPool
- ) {
- this.pipelineService = pipelineService;
- this.projectService = projectService;
- this.gitlabProperty = gitlabProperty;
- this.personProperty = personProperty;
- this.conversionService = conversionService;
- this.forkJoinPool = forkJoinPool;
- }
-
public void scanNewPipeline() {
log.debug("Старт обработки новых пайплайнов");
final Set projectIds = projectService.getAllIdByProcessingEnable();
@@ -86,9 +63,14 @@ public class PipelineParser {
final ExistContainer existContainer = pipelineService.existsById(pipelineProjectMap.keySet());
if (checkFalse(existContainer.isAllFound())) {
- final Set idsNotFound = existContainer.getIdNoFound();
+ final Set> idsNotFound = existContainer.getIdNoFound().stream()
+ .map(pipelineId -> new Pair<>(pipelineProjectMap.get(pipelineId), pipelineId))
+ .collect(toSet());
- final List newPipelines = getNewPipelines(pipelineProjectMap, idsNotFound);
+ final List newPipelines = gitlabSdkManager.getAllPipelineForProject(idsNotFound).stream()
+ .map(json -> conversionService.convert(json, Pipeline.class))
+ .collect(Collectors.toList());
+ ;
if (checkNotEmpty(newPipelines)) {
pipelineService.createAll(newPipelines);
@@ -100,63 +82,22 @@ public class PipelineParser {
log.debug("Конец обработки новых пайплайнов");
}
- private List getNewPipelines(Map pipelineIdAndProjectId, Set idsNotFound) {
- final List>> tasks = idsNotFound.stream()
- .map(
- pipelineId -> GetPipelineTask.builder()
- .pipelineId(pipelineId)
- .projectId(pipelineIdAndProjectId.get(pipelineId))
- .urlPipeline(gitlabProperty.getPipelineUrl())
- .gitlabToken(personProperty.getToken())
- .build()
- )
- .map(forkJoinPool::submit)
- .collect(Collectors.toList());
-
- return pullTaskResult(tasks).stream()
- .flatMap(Optional::stream)
- .map(json -> conversionService.convert(json, Pipeline.class))
- .collect(Collectors.toList());
- }
-
private List getPipelineShortJsons(Set projectIds) {
final LocalDateTime newLastUpdate = LocalDateTime.now();
- final List>> tasks = projectIds.stream()
- .map(projectId -> new GetPipelineShortTask(
- gitlabProperty.getPipelinesUrl(),
- projectId,
- lastUpdate,
- personProperty.getToken()
- ))
- .map(forkJoinPool::submit)
- .collect(Collectors.toList());
-
- final List pipelineJsons = pullTaskResults(tasks);
-
+ final List pipelineJsons = gitlabSdkManager.getAllPipeline(projectIds, lastUpdate.minusHours(12L));
lastUpdate = newLastUpdate;
return pipelineJsons;
}
-
public void scanOldPipeline() {
log.debug("Старт обработки старых пайплайнов");
final List pipelines = pipelineService.getAllByStatuses(oldStatus);
- final List>> tasks = pipelines.stream()
- .map(
- pipeline ->
- GetPipelineTask.builder()
- .projectId(pipeline.getProjectId())
- .pipelineId(pipeline.getId())
- .urlPipeline(gitlabProperty.getPipelineUrl())
- .gitlabToken(personProperty.getToken())
- .build()
- )
- .map(forkJoinPool::submit)
- .collect(Collectors.toList());
-
- final List newPipelines = pullTaskResult(tasks).stream()
- .flatMap(Optional::stream)
+ final List newPipelines = gitlabSdkManager.getAllPipelineForProject(
+ pipelines.stream()
+ .map(pipeline -> new Pair<>(pipeline.getProjectId(), pipeline.getId()))
+ .collect(toSet())
+ ).stream()
.map(json -> conversionService.convert(json, Pipeline.class))
.collect(Collectors.toList());
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/ProjectParser.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/ProjectParser.java
index 93c60d3..a13ffce 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/ProjectParser.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/ProjectParser.java
@@ -3,27 +3,21 @@ 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.utils.HttpParse;
-import dev.struchkov.bot.gitlab.core.utils.StringUtils;
-import dev.struchkov.bot.gitlab.sdk.domain.PersonJson;
-import dev.struchkov.bot.gitlab.sdk.domain.ProjectJson;
+import dev.struchkov.bot.gitlab.sdk.GitlabSdkManager;
+import dev.struchkov.bot.gitlab.sdk.domain.GitlabProjectParam;
+import dev.struchkov.bot.gitlab.sdk.domain.json.ProjectJson;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.convert.ConversionService;
import org.springframework.stereotype.Service;
-import java.text.MessageFormat;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
-import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT;
import static dev.struchkov.haiti.context.exception.ConvertException.convertException;
import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
@@ -37,33 +31,28 @@ import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
@RequiredArgsConstructor
public class ProjectParser {
- public static final String OWNER = "&owned=true";
- public static final String PRIVATE = "&visibility=private";
+ private final GitlabSdkManager gitlabSdkManager;
+ private final ConversionService conversionService;
- private final MergeRequestsService mergeRequestsService;
private final ProjectService projectService;
private final PersonService personService;
- private final ConversionService conversionService;
-
- private final GitlabProperty gitlabProperty;
- private final PersonProperty personProperty;
public void parseAllProjectOwner() {
log.debug("Старт обработки всех проектов, где пользователь владелец");
- parseProjects(OWNER);
+ parseProjects(GitlabProjectParam.OWNER);
log.debug("Конец обработки всех проектов, где пользователь владелец");
}
public void parseAllPrivateProject() {
log.debug("Старт обработки приватных проектов");
- parseProjects(PRIVATE);
+ parseProjects(GitlabProjectParam.PRIVATE);
log.debug("Конец обработки приватных проектов");
}
- private void parseProjects(String param) {
+ private void parseProjects(GitlabProjectParam param) {
int page = 1;
- List projectJsons = getProjectJsons(page, param);
+ List projectJsons = gitlabSdkManager.getAllProject(page, param);
while (checkNotEmpty(projectJsons)) {
@@ -83,15 +72,12 @@ public class ProjectParser {
projectService.createAll(newProjects);
}
- projectJsons = getProjectJsons(++page, param);
+ projectJsons = gitlabSdkManager.getAllProject(++page, param);
}
}
public Project parseByUrl(String projectUrl) {
- final ProjectJson projectJson = HttpParse.request(projectUrl)
- .header(ACCEPT)
- .header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
- .execute(ProjectJson.class)
+ final ProjectJson projectJson = gitlabSdkManager.getProjectByUrl(projectUrl)
.orElseThrow(convertException("Error adding a repository"));
if (!projectService.existsById(projectJson.getId())) {
createNewPersons(List.of(projectJson));
@@ -114,10 +100,7 @@ public class ProjectParser {
final List newPersons = notFoundId.stream()
.map(
- userId -> HttpParse.request(gitlabProperty.getUsersUrl() + "/" + userId)
- .header(ACCEPT)
- .header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
- .execute(PersonJson.class)
+ userId -> gitlabSdkManager.getPersonById(userId)
.map(json -> conversionService.convert(json, Person.class))
.orElseThrow(convertException("Ошибка преобразования нового пользователя"))
).toList();
@@ -126,13 +109,5 @@ public class ProjectParser {
}
}
- private List getProjectJsons(int page, String... params) {
- String param = String.join("", params);
- final String url = MessageFormat.format(gitlabProperty.getProjectsUrl(), page);
- return HttpParse.request(url + param)
- .header(ACCEPT)
- .header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
- .executeList(ProjectJson.class);
- }
}
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/DiscussionServiceImpl.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/DiscussionServiceImpl.java
index c273711..b3d4e6a 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/DiscussionServiceImpl.java
+++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/DiscussionServiceImpl.java
@@ -10,26 +10,18 @@ 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.utils.StringUtils;
+import dev.struchkov.bot.gitlab.sdk.GitlabSdkManager;
import dev.struchkov.haiti.utils.container.Pair;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import okhttp3.FormBody;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.RequestBody;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.io.IOException;
-import java.text.MessageFormat;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -59,7 +51,6 @@ import static java.lang.Boolean.TRUE;
public class DiscussionServiceImpl implements DiscussionService {
protected static final Pattern PATTERN = Pattern.compile("@[\\w]+");
- private final OkHttpClient client = new OkHttpClient();
private final DiscussionRepository repository;
@@ -67,8 +58,8 @@ public class DiscussionServiceImpl implements DiscussionService {
private final AppSettingService settingService;
private final PersonInformation personInformation;
- private final GitlabProperty gitlabProperty;
- private final PersonProperty personProperty;
+
+ private final GitlabSdkManager gitlabSdkManager;
@Override
@Transactional
@@ -235,20 +226,7 @@ public class DiscussionServiceImpl implements DiscussionService {
final MergeRequestForDiscussion mergeRequest = discussion.getMergeRequest();
final Long projectId = mergeRequest.getProjectId();
- final String requestUrl = MessageFormat.format(gitlabProperty.getNewNoteUrl(), projectId, mergeRequest.getTwoId(), discussion.getId(), text);
-
- final RequestBody formBody = new FormBody.Builder().build();
-
- final Request request = new Request.Builder()
- .post(formBody)
- .header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
- .url(requestUrl)
- .build();
- try {
- client.newCall(request).execute();
- } catch (IOException e) {
- log.error(e.getMessage(), e);
- }
+ gitlabSdkManager.sendMessageToDiscussion(projectId, mergeRequest.getTwoId(), discussionId, text);
}
@Override
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
deleted file mode 100644
index 2e2c65a..0000000
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpParse.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package dev.struchkov.bot.gitlab.core.utils;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-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;
-
-@Component
-public class HttpParse {
-
- private static final Logger log = LoggerFactory.getLogger(HttpParse.class);
- private static final ObjectMapper objectMapper;
- private final HttpHeaders headers = new HttpHeaders();
- private final UriComponentsBuilder uriBuilder;
-
- static {
- objectMapper = new ObjectMapper();
- objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- }
-
- private final RestTemplate restTemplate;
-
- public HttpParse(String url, RestTemplate restTemplate) {
- this.restTemplate = restTemplate;
- this.uriBuilder = UriComponentsBuilder.fromHttpUrl(url);
- }
-
- public static HttpParse request(String url, RestTemplate restTemplate) {
- return new HttpParse(url, restTemplate);
- }
-
- public HttpParse header(String name, String value) {
- if (name != null && value != null) {
- headers.add(name, value);
- }
- return this;
- }
-
- public HttpParse header(HttpHeader header) {
- if (header != null) {
- headers.add(header.getName(), header.getValue());
- }
- return this;
- }
-
- public HttpParse getParameter(String name, String value) {
- if (name != null && value != null) {
- uriBuilder.queryParam(name, value);
- }
- return this;
- }
-
- public Optional execute(Class classOfT) {
- 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 (response.getStatusCode().is2xxSuccessful() && response.hasBody()) {
- String body = response.getBody();
- return Optional.ofNullable(objectMapper.readValue(body, classOfT));
- }
- } catch (IOException e) {
- log.error("Ошибка выполнения RestTemplate", e);
- }
- return Optional.empty();
- }
-
- public List executeList(Class classOfT) {
- 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 (response.getStatusCode().is2xxSuccessful() && response.hasBody()) {
- String body = response.getBody();
- return objectMapper.readValue(body, objectMapper.getTypeFactory().constructCollectionType(List.class, classOfT));
- }
- } catch (IOException e) {
- log.error("Ошибка выполнения RestTemplate", e);
- }
- return Collections.emptyList();
- }
-}
-
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
deleted file mode 100644
index 9563e66..0000000
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpParse2.java
+++ /dev/null
@@ -1,125 +0,0 @@
-//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 3767b71..5681d3a 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
@@ -2,10 +2,10 @@ package dev.struchkov.bot.gitlab.config;
import dev.struchkov.bot.gitlab.context.domain.PersonInformation;
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 dev.struchkov.bot.gitlab.sdk.client.HttpParse;
+import dev.struchkov.bot.gitlab.sdk.client.StringUtils;
+import dev.struchkov.bot.gitlab.sdk.config.GitlabProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -17,7 +17,7 @@ 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.bot.gitlab.sdk.client.HttpParse.ACCEPT;
import static dev.struchkov.haiti.context.exception.NotFoundException.notFoundException;
/**
@@ -76,7 +76,7 @@ public class AppConfig {
) {
final PersonInformation personInformation = HttpParse.request(gitlabProperty.getUserUrl())
.header(ACCEPT)
- .header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
+ .header(StringUtils.H_PRIVATE_TOKEN, gitlabProperty.getAccessToken())
.execute(PersonInformation.class)
.orElseThrow(notFoundException("Пользователь не найден"));
personInformation.setTelegramId(personProperty.getTelegramId());
diff --git a/gitlab-app/src/main/resources/application.yml b/gitlab-app/src/main/resources/application.yml
index d264543..4a161c6 100644
--- a/gitlab-app/src/main/resources/application.yml
+++ b/gitlab-app/src/main/resources/application.yml
@@ -37,7 +37,7 @@ telegram:
password: ${PROXY_PASSWORD:}
gitlab-bot:
- version: 1.0.0
+ version: 2.0.0
cron:
scan:
general: ${CRON_GENERAL:0 */1 * * * *}
@@ -45,8 +45,8 @@ gitlab-bot:
new-merge-request: ${CRON_NEW_MR:0 */15 * * * *}
person:
telegram-id: ${TELEGRAM_PERSON_ID}
- token: ${GITLAB_PERSONAL_TOKEN}
gitlab:
+ access-token: ${GITLAB_PERSONAL_TOKEN}
base-url: ${GITLAB_URL}
replaceUrl: ${GITLAB_REPLACE_URL}
users-url: "${GITLAB_URL}/api/v4/users"
diff --git a/gitlab-sdk/pom.xml b/gitlab-sdk/pom.xml
index ce1b229..a6a65e7 100644
--- a/gitlab-sdk/pom.xml
+++ b/gitlab-sdk/pom.xml
@@ -10,6 +10,19 @@
gitlab-sdk
+
+ org.springframework
+ spring-context
+
+
+ dev.struchkov.haiti
+ haiti-utils
+
+
+ com.squareup.okhttp3
+ okhttp
+
+
org.projectlombok
lombok
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/GitlabSdkManager.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/GitlabSdkManager.java
new file mode 100644
index 0000000..b8c60bc
--- /dev/null
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/GitlabSdkManager.java
@@ -0,0 +1,208 @@
+package dev.struchkov.bot.gitlab.sdk;
+
+import dev.struchkov.bot.gitlab.sdk.client.HttpParse;
+import dev.struchkov.bot.gitlab.sdk.client.StringUtils;
+import dev.struchkov.bot.gitlab.sdk.config.GitlabProperty;
+import dev.struchkov.bot.gitlab.sdk.domain.GitlabProjectParam;
+import dev.struchkov.bot.gitlab.sdk.domain.json.ApprovalContainerJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.ApprovalJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.CommitJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.DiscussionJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.MergeRequestJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.PersonJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.PipelineJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.PipelineShortJson;
+import dev.struchkov.bot.gitlab.sdk.domain.json.ProjectJson;
+import dev.struchkov.bot.gitlab.sdk.forktask.GetAllMergeRequestForProjectTask;
+import dev.struchkov.bot.gitlab.sdk.forktask.GetPipelineShortTask;
+import dev.struchkov.bot.gitlab.sdk.forktask.GetPipelineTask;
+import dev.struchkov.bot.gitlab.sdk.forktask.GetSingleMergeRequestTask;
+import dev.struchkov.haiti.utils.container.Pair;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.FormBody;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.ForkJoinPool;
+import java.util.concurrent.ForkJoinTask;
+import java.util.stream.Collectors;
+
+import static dev.struchkov.bot.gitlab.sdk.client.HttpParse.ACCEPT;
+import static dev.struchkov.bot.gitlab.sdk.client.StringUtils.H_PRIVATE_TOKEN;
+import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResult;
+import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResults;
+import static java.util.Collections.emptyList;
+import static java.util.stream.Collectors.toList;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class GitlabSdkManager {
+
+ private final ForkJoinPool forkJoinPool;
+ private final GitlabProperty gitlabProperty;
+
+ public Optional getPersonById(Long userId) {
+ return HttpParse.request(gitlabProperty.getUsersUrl() + "/" + userId)
+ .header(ACCEPT)
+ .header(StringUtils.H_PRIVATE_TOKEN, gitlabProperty.getAccessToken())
+ .execute(PersonJson.class);
+ }
+
+ public List getAllProject(int pageNumber, GitlabProjectParam... params) {
+ String param = Arrays.stream(params)
+ .map(GitlabProjectParam::getUrl)
+ .collect(Collectors.joining());
+ final String url = MessageFormat.format(gitlabProperty.getProjectsUrl(), pageNumber);
+ return HttpParse.request(url + param)
+ .header(ACCEPT)
+ .header(StringUtils.H_PRIVATE_TOKEN, gitlabProperty.getAccessToken())
+ .executeList(ProjectJson.class);
+ }
+
+ public Optional getProjectByUrl(String projectUrl) {
+ return HttpParse.request(projectUrl)
+ .header(ACCEPT)
+ .header(StringUtils.H_PRIVATE_TOKEN, gitlabProperty.getAccessToken())
+ .execute(ProjectJson.class);
+ }
+
+ /**
+ * Позволяет получить MR для переданных идентификаторов проектов.
+ *
+ * @param projectIds идентификаторы проектов
+ * @return полученные у GitLab MergeRequests
+ */
+ public List getAllMergeRequestByProjectIds(Set projectIds) {
+ final List>> tasks = projectIds.stream()
+ .map(projectId -> new GetAllMergeRequestForProjectTask(projectId, gitlabProperty.getOpenMergeRequestsUrl(), gitlabProperty.getAccessToken()))
+ .map(forkJoinPool::submit)
+ .collect(Collectors.toList());
+
+ return pullTaskResults(tasks);
+ }
+
+ public List getAllCommitByProjectId(Long projectId, Long mergeRequestIdForProject) {
+ return HttpParse.request(
+ MessageFormat.format(gitlabProperty.getLastCommitOfMergeRequestUrl(), projectId, mergeRequestIdForProject)
+ )
+ .header(ACCEPT)
+ .header(StringUtils.H_PRIVATE_TOKEN, gitlabProperty.getAccessToken())
+ .executeList(CommitJson.class);
+ }
+
+ public List getAllApprovalForMergeRequest(Long projectId, Long mergeRequestIdForProject) {
+ return HttpParse.request(
+ MessageFormat.format(gitlabProperty.getMergeRequestApprovalUrl(), projectId, mergeRequestIdForProject)
+ )
+ .header(ACCEPT)
+ .header(StringUtils.H_PRIVATE_TOKEN, gitlabProperty.getAccessToken())
+ .execute(ApprovalContainerJson.class)
+ .map(ApprovalContainerJson::getApprovals)
+ .orElse(emptyList());
+ }
+
+ /**
+ * projectId + mrTwoId
+ */
+ public List getAllMergeRequestById(Collection> projectIdAndMrIdForProject) {
+ final List>> tasks = projectIdAndMrIdForProject.stream()
+ .map(
+ pair -> new GetSingleMergeRequestTask(
+ gitlabProperty.getMergeRequestUrl(),
+ pair.getKey(),
+ pair.getValue(),
+ gitlabProperty.getAccessToken()
+ )
+ ).map(forkJoinPool::submit)
+ .collect(toList());
+
+ return pullTaskResult(tasks).stream()
+ .flatMap(Optional::stream)
+ .collect(toList());
+ }
+
+ public List getAllPipelineForProject(Collection> projectIdAndPipelineId) {
+ final List>> tasks = projectIdAndPipelineId.stream()
+ .map(
+ pair -> GetPipelineTask.builder()
+ .pipelineId(pair.getValue())
+ .projectId(pair.getKey())
+ .urlPipeline(gitlabProperty.getPipelineUrl())
+ .gitlabToken(gitlabProperty.getAccessToken())
+ .build()
+ )
+ .map(forkJoinPool::submit)
+ .collect(Collectors.toList());
+
+ return pullTaskResult(tasks).stream()
+ .flatMap(Optional::stream)
+ .collect(toList());
+ }
+
+ public List getAllPipeline(Collection projectIds, LocalDateTime updatedAfter) {
+ final List>> tasks = projectIds.stream()
+ .map(projectId -> new GetPipelineShortTask(
+ gitlabProperty.getPipelinesUrl(),
+ projectId,
+ updatedAfter,
+ gitlabProperty.getAccessToken()
+ ))
+ .map(forkJoinPool::submit)
+ .collect(Collectors.toList());
+
+ return pullTaskResults(tasks);
+ }
+
+ public List getDiscussionForMergeRequest(Long projectId, Long mergeRequestIdForProject, int pageNumber) {
+ return HttpParse.request(MessageFormat.format(gitlabProperty.getDiscussionsUrl(), projectId, mergeRequestIdForProject, pageNumber, pageNumber))
+ .header(ACCEPT)
+ .header(H_PRIVATE_TOKEN, gitlabProperty.getAccessToken())
+ .executeList(DiscussionJson.class);
+ }
+
+ public Optional getDiscussionById(Long projectId, Long mergeRequestIdForProject, String discussionId) {
+ return HttpParse.request(createLinkOldDiscussion(projectId, mergeRequestIdForProject, discussionId))
+ .header(ACCEPT)
+ .header(H_PRIVATE_TOKEN, gitlabProperty.getAccessToken())
+ .execute(DiscussionJson.class);
+ }
+
+ private String createLinkOldDiscussion(Long projectId, Long mergeRequestIdForProject, String discussionId) {
+ return MessageFormat.format(
+ gitlabProperty.getDiscussionUrl(),
+ projectId,
+ mergeRequestIdForProject,
+ discussionId
+ );
+ }
+
+ public void sendMessageToDiscussion(Long projectId, Long mergeRequestIdForProject, String discussionId, String message) {
+ final String requestUrl = MessageFormat.format(gitlabProperty.getNewNoteUrl(), projectId, mergeRequestIdForProject, discussionId, message);
+
+ final RequestBody formBody = new FormBody.Builder().build();
+
+ final Request request = new Request.Builder()
+ .post(formBody)
+ .header(StringUtils.H_PRIVATE_TOKEN, gitlabProperty.getAccessToken())
+ .url(requestUrl)
+ .build();
+ try {
+ HttpParse.getNewClient().newCall(request).execute();
+ } catch (IOException e) {
+ log.error(e.getMessage(), e);
+ }
+ }
+
+
+}
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpHeader.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/HttpHeader.java
similarity index 82%
rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpHeader.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/HttpHeader.java
index 48ae851..c8555fb 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/HttpHeader.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/HttpHeader.java
@@ -1,6 +1,6 @@
-package dev.struchkov.bot.gitlab.core.utils;
+package dev.struchkov.bot.gitlab.sdk.client;
-import static dev.struchkov.haiti.utils.Inspector.isNotNull;
+import dev.struchkov.haiti.utils.Inspector;
/**
* Утилитарная сущность для {@link HttpParse}. Упрощает сохранения в константы заголовков для запроса.
@@ -18,7 +18,7 @@ public class HttpHeader {
}
public static HttpHeader of(String name, String value) {
- isNotNull(name, value);
+ Inspector.isNotNull(name, value);
return new HttpHeader(name, value);
}
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/HttpParse.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/HttpParse.java
new file mode 100644
index 0000000..eea4d50
--- /dev/null
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/HttpParse.java
@@ -0,0 +1,121 @@
+package dev.struchkov.bot.gitlab.sdk.client;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import dev.struchkov.haiti.utils.Checker;
+import dev.struchkov.haiti.utils.Inspector;
+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;
+
+/**
+ * Утилитарный класс для работы с 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) {
+ Inspector.isNotNull(name);
+ if (value != null) {
+ requestBuilder.header(name, value);
+ }
+ return this;
+ }
+
+ public HttpParse header(HttpHeader header) {
+ Inspector.isNotNull(header);
+ requestBuilder.header(header.getName(), header.getValue());
+ return this;
+ }
+
+ public HttpParse getParameter(String name, String value) {
+ Inspector.isNotNull(name);
+ if (value != null) {
+ httpUrlBuilder.addQueryParameter(name, value);
+ }
+ return this;
+ }
+
+ public Optional execute(Class classOfT) {
+ Inspector.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() && Checker.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) {
+ Inspector.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() && Checker.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();
+ }
+
+ public 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-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/HttpParseNew.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/HttpParseNew.java
new file mode 100644
index 0000000..772b34b
--- /dev/null
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/HttpParseNew.java
@@ -0,0 +1,100 @@
+//package dev.struchkov.bot.gitlab.core.utils;
+//
+//import com.fasterxml.jackson.databind.DeserializationFeature;
+//import com.fasterxml.jackson.databind.ObjectMapper;
+//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;
+//
+//@Component
+//public class HttpParse {
+//
+// private static final Logger log = LoggerFactory.getLogger(HttpParse.class);
+// private static final ObjectMapper objectMapper;
+//
+// static {
+// objectMapper = new ObjectMapper();
+// objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+// }
+//
+// private final RestTemplate restTemplate;
+// private final HttpHeaders headers = new HttpHeaders();
+// private UriComponentsBuilder uriBuilder;
+//
+// public HttpParse(RestTemplate restTemplate) {
+// this.restTemplate = restTemplate;
+// }
+//
+// public HttpParse url(String url) {
+// this.uriBuilder = UriComponentsBuilder.fromHttpUrl(url);
+// return this;
+// }
+//
+// public HttpParse header(String name, String value) {
+// if (name != null && value != null) {
+// headers.add(name, value);
+// }
+// return this;
+// }
+//
+// public HttpParse header(HttpHeader header) {
+// if (header != null) {
+// headers.add(header.getName(), header.getValue());
+// }
+// return this;
+// }
+//
+// public HttpParse getParameter(String name, String value) {
+// if (name != null && value != null) {
+// uriBuilder.queryParam(name, value);
+// }
+// return this;
+// }
+//
+// public Optional execute(Class classOfT) {
+// 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 (response.getStatusCode().is2xxSuccessful() && response.hasBody()) {
+// String body = response.getBody();
+// return Optional.ofNullable(objectMapper.readValue(body, classOfT));
+// }
+// } catch (IOException e) {
+// log.error("Ошибка выполнения RestTemplate", e);
+// }
+// return Optional.empty();
+// }
+//
+// public List executeList(Class classOfT) {
+// 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 (response.getStatusCode().is2xxSuccessful() && response.hasBody()) {
+// String body = response.getBody();
+// return objectMapper.readValue(body, objectMapper.getTypeFactory().constructCollectionType(List.class, classOfT));
+// }
+// } catch (IOException e) {
+// log.error("Ошибка выполнения RestTemplate", e);
+// }
+// return Collections.emptyList();
+// }
+//
+//}
+
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/OkHttpUtil.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/OkHttpUtil.java
similarity index 94%
rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/OkHttpUtil.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/OkHttpUtil.java
index 555a741..b53e1bd 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/OkHttpUtil.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/OkHttpUtil.java
@@ -1,5 +1,6 @@
-package dev.struchkov.bot.gitlab.core.utils;
+package dev.struchkov.bot.gitlab.sdk.client;
+import dev.struchkov.haiti.utils.Exceptions;
import okhttp3.OkHttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -9,14 +10,12 @@ import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
-import static dev.struchkov.haiti.utils.Exceptions.utilityClass;
-
public class OkHttpUtil {
private static final Logger log = LoggerFactory.getLogger(OkHttpUtil.class);
public OkHttpUtil() {
- utilityClass();
+ Exceptions.utilityClass();
}
public static void ignoreCertificate(OkHttpClient.Builder builder) {
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/StringUtils.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/StringUtils.java
similarity index 87%
rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/StringUtils.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/StringUtils.java
index 60ffe45..c91ca86 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/utils/StringUtils.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/client/StringUtils.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.core.utils;
+package dev.struchkov.bot.gitlab.sdk.client;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git a/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/GitlabProperty.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/config/GitlabProperty.java
similarity index 94%
rename from bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/GitlabProperty.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/config/GitlabProperty.java
index 3fafbb2..07b3057 100644
--- a/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/prop/GitlabProperty.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/config/GitlabProperty.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.context.prop;
+package dev.struchkov.bot.gitlab.sdk.config;
import lombok.Getter;
import lombok.Setter;
@@ -14,6 +14,8 @@ public class GitlabProperty {
private String baseUrl;
+ private String accessToken;
+
private String replaceUrl;
private String usersUrl;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/GitlabProjectParam.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/GitlabProjectParam.java
new file mode 100644
index 0000000..11bf2d8
--- /dev/null
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/GitlabProjectParam.java
@@ -0,0 +1,14 @@
+package dev.struchkov.bot.gitlab.sdk.domain;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor
+public enum GitlabProjectParam {
+
+ OWNER("&owned=true"),
+ PRIVATE("&visibility=private");
+
+ private final String url;
+}
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/ApprovalContainerJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/ApprovalContainerJson.java
similarity index 81%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/ApprovalContainerJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/ApprovalContainerJson.java
index fd1611b..cfb9caa 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/ApprovalContainerJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/ApprovalContainerJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/ApprovalJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/ApprovalJson.java
similarity index 64%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/ApprovalJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/ApprovalJson.java
index 6ed76ad..cc7bd7c 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/ApprovalJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/ApprovalJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import lombok.Data;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/CommitJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/CommitJson.java
similarity index 93%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/CommitJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/CommitJson.java
index 23a7ebf..5cb986b 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/CommitJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/CommitJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/DiscussionJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/DiscussionJson.java
similarity index 81%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/DiscussionJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/DiscussionJson.java
index 871da61..288b5bf 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/DiscussionJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/DiscussionJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import lombok.Getter;
import lombok.Setter;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/MergeRequestJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/MergeRequestJson.java
similarity index 96%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/MergeRequestJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/MergeRequestJson.java
index aec5c0b..3c2d48f 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/MergeRequestJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/MergeRequestJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/MergeRequestStateJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/MergeRequestStateJson.java
similarity index 85%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/MergeRequestStateJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/MergeRequestStateJson.java
index 6e7bd9a..a923442 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/MergeRequestStateJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/MergeRequestStateJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/MilestoneJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/MilestoneJson.java
similarity index 67%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/MilestoneJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/MilestoneJson.java
index dd8c889..4086114 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/MilestoneJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/MilestoneJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import lombok.Data;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/NoteJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/NoteJson.java
similarity index 96%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/NoteJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/NoteJson.java
index 0e80f91..a35391b 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/NoteJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/NoteJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PersonJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PersonJson.java
similarity index 84%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PersonJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PersonJson.java
index f05a4c4..adbf01a 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PersonJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PersonJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PipelineJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PipelineJson.java
similarity index 95%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PipelineJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PipelineJson.java
index f1d06cf..689fc28 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PipelineJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PipelineJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PipelineShortJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PipelineShortJson.java
similarity index 95%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PipelineShortJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PipelineShortJson.java
index 74e22c7..46c659c 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PipelineShortJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PipelineShortJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PipelineStatusJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PipelineStatusJson.java
similarity index 92%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PipelineStatusJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PipelineStatusJson.java
index f5c073b..781c8ac 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/PipelineStatusJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/PipelineStatusJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/ProjectJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/ProjectJson.java
similarity index 95%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/ProjectJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/ProjectJson.java
index 6f848a8..8f1b180 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/ProjectJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/ProjectJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/UserJson.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/UserJson.java
similarity index 75%
rename from gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/UserJson.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/UserJson.java
index e6f2dd8..501ae6e 100644
--- a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/UserJson.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/domain/json/UserJson.java
@@ -1,4 +1,4 @@
-package dev.struchkov.bot.gitlab.sdk.domain;
+package dev.struchkov.bot.gitlab.sdk.domain.json;
import lombok.Data;
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllDiscussionForMergeRequestTask.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetAllDiscussionForMergeRequestTask.java
similarity index 83%
rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllDiscussionForMergeRequestTask.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetAllDiscussionForMergeRequestTask.java
index bf93b5a..4e58947 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllDiscussionForMergeRequestTask.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetAllDiscussionForMergeRequestTask.java
@@ -1,7 +1,7 @@
-package dev.struchkov.bot.gitlab.core.parser.forktask;
+package dev.struchkov.bot.gitlab.sdk.forktask;
-import dev.struchkov.bot.gitlab.core.utils.HttpParse;
-import dev.struchkov.bot.gitlab.sdk.domain.DiscussionJson;
+import dev.struchkov.bot.gitlab.sdk.client.HttpParse;
+import dev.struchkov.bot.gitlab.sdk.domain.json.DiscussionJson;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
@@ -10,8 +10,8 @@ import java.text.MessageFormat;
import java.util.List;
import java.util.concurrent.RecursiveTask;
-import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT;
-import static dev.struchkov.bot.gitlab.core.utils.StringUtils.H_PRIVATE_TOKEN;
+import static dev.struchkov.bot.gitlab.sdk.client.HttpParse.ACCEPT;
+import static dev.struchkov.bot.gitlab.sdk.client.StringUtils.H_PRIVATE_TOKEN;
import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
@AllArgsConstructor
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllMergeRequestForProjectTask.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetAllMergeRequestForProjectTask.java
similarity index 85%
rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllMergeRequestForProjectTask.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetAllMergeRequestForProjectTask.java
index c8786ca..2d0546f 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetAllMergeRequestForProjectTask.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetAllMergeRequestForProjectTask.java
@@ -1,8 +1,8 @@
-package dev.struchkov.bot.gitlab.core.parser.forktask;
+package dev.struchkov.bot.gitlab.sdk.forktask;
-import dev.struchkov.bot.gitlab.core.utils.HttpParse;
-import dev.struchkov.bot.gitlab.core.utils.StringUtils;
-import dev.struchkov.bot.gitlab.sdk.domain.MergeRequestJson;
+import dev.struchkov.bot.gitlab.sdk.client.HttpParse;
+import dev.struchkov.bot.gitlab.sdk.client.StringUtils;
+import dev.struchkov.bot.gitlab.sdk.domain.json.MergeRequestJson;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
@@ -12,7 +12,7 @@ import java.text.MessageFormat;
import java.util.List;
import java.util.concurrent.RecursiveTask;
-import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT;
+import static dev.struchkov.bot.gitlab.sdk.client.HttpParse.ACCEPT;
import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
@Slf4j
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineShortTask.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetPipelineShortTask.java
similarity index 82%
rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineShortTask.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetPipelineShortTask.java
index 33c69fd..6587e31 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineShortTask.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetPipelineShortTask.java
@@ -1,8 +1,8 @@
-package dev.struchkov.bot.gitlab.core.parser.forktask;
+package dev.struchkov.bot.gitlab.sdk.forktask;
-import dev.struchkov.bot.gitlab.core.utils.HttpParse;
-import dev.struchkov.bot.gitlab.core.utils.StringUtils;
-import dev.struchkov.bot.gitlab.sdk.domain.PipelineShortJson;
+import dev.struchkov.bot.gitlab.sdk.client.HttpParse;
+import dev.struchkov.bot.gitlab.sdk.client.StringUtils;
+import dev.struchkov.bot.gitlab.sdk.domain.json.PipelineShortJson;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
@@ -13,7 +13,7 @@ import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.RecursiveTask;
-import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT;
+import static dev.struchkov.bot.gitlab.sdk.client.HttpParse.ACCEPT;
@Slf4j
@@ -47,7 +47,7 @@ public class GetPipelineShortTask extends RecursiveTask>
final List jsons = HttpParse.request(MessageFormat.format(urlPipelines, projectId, pageNumber, PAGE_COUNT))
.header(ACCEPT)
.header(StringUtils.H_PRIVATE_TOKEN, gitlabToken)
- .getParameter("updated_after", lastUpdate.minusHours(12L).toString())
+ .getParameter("updated_after", lastUpdate.toString())
.executeList(PipelineShortJson.class);
log.trace("Получено {} шт потенциально новых пайплайнов для проекта id:'{}' ", jsons.size(), projectId);
return jsons;
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineTask.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetPipelineTask.java
similarity index 78%
rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineTask.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetPipelineTask.java
index a287992..4a0374f 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetPipelineTask.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetPipelineTask.java
@@ -1,8 +1,8 @@
-package dev.struchkov.bot.gitlab.core.parser.forktask;
+package dev.struchkov.bot.gitlab.sdk.forktask;
-import dev.struchkov.bot.gitlab.core.utils.HttpParse;
-import dev.struchkov.bot.gitlab.core.utils.StringUtils;
-import dev.struchkov.bot.gitlab.sdk.domain.PipelineJson;
+import dev.struchkov.bot.gitlab.sdk.client.HttpParse;
+import dev.struchkov.bot.gitlab.sdk.client.StringUtils;
+import dev.struchkov.bot.gitlab.sdk.domain.json.PipelineJson;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -14,7 +14,7 @@ import java.text.MessageFormat;
import java.util.Optional;
import java.util.concurrent.RecursiveTask;
-import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT;
+import static dev.struchkov.bot.gitlab.sdk.client.HttpParse.ACCEPT;
@Slf4j
diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetSingleMergeRequestTask.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetSingleMergeRequestTask.java
similarity index 74%
rename from bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetSingleMergeRequestTask.java
rename to gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetSingleMergeRequestTask.java
index 8022122..54da005 100644
--- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/parser/forktask/GetSingleMergeRequestTask.java
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/forktask/GetSingleMergeRequestTask.java
@@ -1,8 +1,8 @@
-package dev.struchkov.bot.gitlab.core.parser.forktask;
+package dev.struchkov.bot.gitlab.sdk.forktask;
-import dev.struchkov.bot.gitlab.core.utils.HttpParse;
-import dev.struchkov.bot.gitlab.core.utils.StringUtils;
-import dev.struchkov.bot.gitlab.sdk.domain.MergeRequestJson;
+import dev.struchkov.bot.gitlab.sdk.client.HttpParse;
+import dev.struchkov.bot.gitlab.sdk.client.StringUtils;
+import dev.struchkov.bot.gitlab.sdk.domain.json.MergeRequestJson;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -11,7 +11,7 @@ import java.text.MessageFormat;
import java.util.Optional;
import java.util.concurrent.RecursiveTask;
-import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT;
+import static dev.struchkov.bot.gitlab.sdk.client.HttpParse.ACCEPT;
@Slf4j
diff --git a/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/util/GitlabUrlParser.java b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/util/GitlabUrlParser.java
new file mode 100644
index 0000000..7a79094
--- /dev/null
+++ b/gitlab-sdk/src/main/java/dev/struchkov/bot/gitlab/sdk/util/GitlabUrlParser.java
@@ -0,0 +1,8 @@
+package dev.struchkov.bot.gitlab.sdk.util;
+
+import lombok.experimental.UtilityClass;
+
+@UtilityClass
+public class GitlabUrlParser {
+
+}
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 530b712..628a704 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.context.prop.GitlabProperty;
+import dev.struchkov.bot.gitlab.sdk.config.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/unit/MenuConfig.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/unit/MenuConfig.java
index 572d034..2cf96da 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.parser.ProjectParser;
+import dev.struchkov.bot.gitlab.sdk.config.GitlabProperty;
import dev.struchkov.bot.gitlab.telegram.utils.UnitName;
import dev.struchkov.godfather.main.domain.annotation.Unit;
import dev.struchkov.godfather.main.domain.content.Mail;
@@ -42,6 +42,7 @@ import static dev.struchkov.godfather.simple.domain.BoxAnswer.replaceBoxAnswer;
import static dev.struchkov.godfather.telegram.domain.keyboard.InlineKeyBoard.inlineKeyBoard;
import static dev.struchkov.godfather.telegram.domain.keyboard.SimpleKeyBoardLine.keyBoardLine;
import static dev.struchkov.godfather.telegram.domain.keyboard.button.SimpleButton.simpleButton;
+import static dev.struchkov.godfather.telegram.main.context.BoxAnswerPayload.ENABLE_MARKDOWN;
import static dev.struchkov.godfather.telegram.main.core.util.UnitTrigger.clickButtonRaw;
import static dev.struchkov.godfather.telegram.main.core.util.UnitTrigger.isLinks;
import static java.util.Collections.singleton;
@@ -65,7 +66,6 @@ public class MenuConfig implements PersonUnitConfiguration {
private final MergeRequestsService mergeRequestsService;
private final AppSettingService settingService;
-
@Unit(value = ACCESS_ERROR, main = true)
public AnswerText accessError() {
return AnswerText.builder()
@@ -83,6 +83,7 @@ public class MenuConfig implements PersonUnitConfiguration {
return BoxAnswer.builder()
.recipientPersonId(personInformation.getTelegramId())
.message(messageText)
+ .payload(ENABLE_MARKDOWN)
.build();
})
.build();