-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat : upgrade to 1.0.0-M1 #61
Changes from 4 commits
0d932ba
6f3b589
21f9420
2bb1195
2d6cd7b
47547cb
da87ad4
d18fe6b
ae4d35e
31834f7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -2,28 +2,68 @@ | |||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
import java.io.IOException; | ||||||||||||||||||||||||||||||||||||||||||
import java.io.InputStream; | ||||||||||||||||||||||||||||||||||||||||||
import java.nio.charset.Charset; | ||||||||||||||||||||||||||||||||||||||||||
import java.nio.charset.StandardCharsets; | ||||||||||||||||||||||||||||||||||||||||||
import java.util.Collections; | ||||||||||||||||||||||||||||||||||||||||||
import java.util.List; | ||||||||||||||||||||||||||||||||||||||||||
import org.slf4j.Logger; | ||||||||||||||||||||||||||||||||||||||||||
import org.slf4j.LoggerFactory; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.boot.web.client.ClientHttpRequestFactories; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.boot.web.client.ClientHttpRequestFactorySettings; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.boot.web.client.RestClientCustomizer; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.context.annotation.Bean; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.context.annotation.Configuration; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.http.HttpHeaders; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.http.HttpRequest; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.http.HttpStatusCode; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.http.MediaType; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.http.client.BufferingClientHttpRequestFactory; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.http.client.ClientHttpResponse; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.util.LinkedMultiValueMap; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.util.MultiValueMap; | ||||||||||||||||||||||||||||||||||||||||||
import org.springframework.util.StreamUtils; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
@Configuration(proxyBeanMethods = false) | ||||||||||||||||||||||||||||||||||||||||||
@ConditionalOnProperty(value = "spring.ai.openai.api-key", havingValue = "demo") | ||||||||||||||||||||||||||||||||||||||||||
public class ResponseHeadersModification { | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
private static final Logger LOGGER = LoggerFactory.getLogger(ResponseHeadersModification.class); | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
@Bean | ||||||||||||||||||||||||||||||||||||||||||
RestClientCustomizer restClientCustomizer() { | ||||||||||||||||||||||||||||||||||||||||||
return restClientBuilder -> restClientBuilder.requestInterceptor((request, body, execution) -> { | ||||||||||||||||||||||||||||||||||||||||||
ClientHttpResponse response = execution.execute(request, body); | ||||||||||||||||||||||||||||||||||||||||||
return new CustomClientHttpResponse(response); | ||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||
return restClientBuilder -> restClientBuilder | ||||||||||||||||||||||||||||||||||||||||||
.requestFactory(new BufferingClientHttpRequestFactory( | ||||||||||||||||||||||||||||||||||||||||||
ClientHttpRequestFactories.get(ClientHttpRequestFactorySettings.DEFAULTS))) | ||||||||||||||||||||||||||||||||||||||||||
.requestInterceptor((request, body, execution) -> { | ||||||||||||||||||||||||||||||||||||||||||
logRequest(request, body); | ||||||||||||||||||||||||||||||||||||||||||
ClientHttpResponse response = execution.execute(request, body); | ||||||||||||||||||||||||||||||||||||||||||
logResponse(response); | ||||||||||||||||||||||||||||||||||||||||||
return new CustomClientHttpResponse(response); | ||||||||||||||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||||||||||||||
.defaultHeaders(httpHeaders -> { | ||||||||||||||||||||||||||||||||||||||||||
httpHeaders.setContentType(MediaType.APPLICATION_JSON); | ||||||||||||||||||||||||||||||||||||||||||
httpHeaders.setAccept(List.of(MediaType.ALL)); | ||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
private void logResponse(ClientHttpResponse response) throws IOException { | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("============================response begin=========================================="); | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("Status code : {}", response.getStatusCode()); | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("Status text : {}", response.getStatusText()); | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("Headers : {}", response.getHeaders()); | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("Response body: {}", StreamUtils.copyToString(response.getBody(), Charset.defaultCharset())); | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("=======================response end================================================="); | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
private void logRequest(HttpRequest request, byte[] body) { | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("===========================request begin================================================"); | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("URI : {}", request.getURI()); | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("Method : {}", request.getMethod()); | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("Headers : {}", request.getHeaders()); | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("Request body: {}", new String(body, StandardCharsets.UTF_8)); | ||||||||||||||||||||||||||||||||||||||||||
LOGGER.info("==========================request end================================================"); | ||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Refactor the - LOGGER.info("Request body: {}", new String(body, StandardCharsets.UTF_8));
+ try {
+ LOGGER.info("Request body: {}", new String(body, StandardCharsets.UTF_8));
+ } catch (Exception e) {
+ LOGGER.error("Error logging request body", e);
+ } This change ensures that any exceptions during the logging of the request body are caught and handled appropriately. Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
private static class CustomClientHttpResponse implements ClientHttpResponse { | ||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,6 @@ | ||
spring.datasource.password=secret | ||
spring.datasource.username=appuser | ||
spring.datasource.url=jdbc:postgresql://localhost/appdb | ||
|
||
# default value of openai is 1536 | ||
spring.ai.vectorstore.pgvector.dimensions=384 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Enhance the
logResponse
method to handle potential exceptions more gracefully.This change is recommended to prevent the application from crashing in case of an IOException when reading the response body.
Committable suggestion