|
|
@@ -14,6 +14,7 @@ import okhttp3.*;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.data.domain.*;
|
|
|
+import org.springframework.data.util.Streamable;
|
|
|
|
|
|
import javax.validation.constraints.NotBlank;
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
@@ -38,6 +39,11 @@ public class SeecoderBokClient
|
|
|
private final int CONFIG_PAGE_START;
|
|
|
private final String CONFIG_HOST;
|
|
|
|
|
|
+ /**
|
|
|
+ * 创建client
|
|
|
+ *
|
|
|
+ * @param host bok地址,示例:{@code "http://bok.seecoder.cn"}
|
|
|
+ */
|
|
|
public SeecoderBokClient(String host) {
|
|
|
this(host, 0);
|
|
|
}
|
|
|
@@ -178,18 +184,6 @@ public class SeecoderBokClient
|
|
|
return getQuestionVOS(pageable, urlBuilder);
|
|
|
}
|
|
|
|
|
|
- private Page<QuestionVO> getQuestionVOS(Pageable pageable, HttpUrl.Builder urlBuilder) {
|
|
|
- HttpUrl httpUrl = addPageableToParams(urlBuilder, pageable).build();
|
|
|
- Response response = get(httpUrl);
|
|
|
- return getResponseBody(response, PageableQuestionListVO.class)
|
|
|
- .map(pageableQuestionListVO ->
|
|
|
- new PageImpl<>(
|
|
|
- pageableQuestionListVO.getQuestions(),
|
|
|
- parseBokToPageable(pageableQuestionListVO.getPage(), pageable),
|
|
|
- pageableQuestionListVO.getPage().getTotalElements()))
|
|
|
- .orElse(new PageImpl<>(Collections.emptyList()));
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public Optional<InteractiveVO> getUserInteractiveQuestion(
|
|
|
@NotBlank String userId, @NotBlank String questionId) {
|
|
|
@@ -209,6 +203,18 @@ public class SeecoderBokClient
|
|
|
.orElse(Collections.emptyList());
|
|
|
}
|
|
|
|
|
|
+ private Page<QuestionVO> getQuestionVOS(Pageable pageable, HttpUrl.Builder urlBuilder) {
|
|
|
+ HttpUrl httpUrl = addPageableToParams(urlBuilder, pageable).build();
|
|
|
+ Response response = get(httpUrl);
|
|
|
+ return getResponseBody(response, PageableQuestionListVO.class)
|
|
|
+ .map(pageableQuestionListVO ->
|
|
|
+ new PageImpl<>(
|
|
|
+ pageableQuestionListVO.getQuestions(),
|
|
|
+ parseBokToPageable(pageableQuestionListVO.getPage(), pageable),
|
|
|
+ pageableQuestionListVO.getPage().getTotalElements()))
|
|
|
+ .orElse(new PageImpl<>(Collections.emptyList()));
|
|
|
+ }
|
|
|
+
|
|
|
private Response get(HttpUrl httpUrl) {
|
|
|
return requestWithMethod("GET", httpUrl, null);
|
|
|
}
|
|
|
@@ -313,16 +319,22 @@ public class SeecoderBokClient
|
|
|
private HttpUrl.Builder addPageableToParams(HttpUrl.Builder builder, Pageable pageable) {
|
|
|
return Optional.ofNullable(pageable)
|
|
|
.map(notNullPageable ->
|
|
|
- builder.addQueryParameter("page", String.valueOf(parsePageableNumberToBok(notNullPageable.getPageNumber())))
|
|
|
- .addQueryParameter("total", notNullPageable.getSort().toString())
|
|
|
+ // TODO: not accept error
|
|
|
+ builder.addQueryParameter("page", String.valueOf(parsePageableNumberToBok(notNullPageable.getPageNumber()) + 1))
|
|
|
+ .addQueryParameter("sort", parseSort(notNullPageable.getSort()))
|
|
|
.addQueryParameter("size", String.valueOf(notNullPageable.getPageSize()))
|
|
|
)
|
|
|
.orElse(builder);
|
|
|
}
|
|
|
|
|
|
- private String joinComma(List<String> list) {
|
|
|
+ private String joinComma(Iterable<String> list) {
|
|
|
return Optional.ofNullable(list)
|
|
|
.map(notNullList -> String.join(",", notNullList))
|
|
|
.orElse("");
|
|
|
}
|
|
|
+
|
|
|
+ private String parseSort(Sort sort) {
|
|
|
+ return String.join("|",
|
|
|
+ sort.map(order -> order.getProperty() + "," + order.getDirection()));
|
|
|
+ }
|
|
|
}
|