Skip to content
Snippets Groups Projects
Commit b9e94f0b authored by Jörg Bolay's avatar Jörg Bolay
Browse files

OZG-2964 generierung umstellung von webclient auf restclient

parent c153c969
No related branches found
No related tags found
1 merge request!10KOP-2964 umstellen von WebClient auf RestClient und entfernen von...
Pipeline #1477 failed
......@@ -91,6 +91,11 @@
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
</dependency>
<!-- used by generated code -->
<!-- @Nullable annotation -->
......@@ -148,7 +153,7 @@
<configOptions>
<sourceFolder>src/gen/java/main</sourceFolder>
<serializationLibrary>jackson</serializationLibrary>
<library>webclient</library>
<library>restclient</library>
<annotationLibrary>swagger2</annotationLibrary>
<apiPackage>de.ozgcloud.nachrichten.postfach.osiv2.gen.api</apiPackage>
<modelPackage>de.ozgcloud.nachrichten.postfach.osiv2.gen.model</modelPackage>
......
package de.ozgcloud.nachrichten.postfach.osiv2.config;
import org.apache.hc.client5.http.auth.AuthScope;
import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
import org.apache.hc.client5.http.classic.HttpClient;
import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.hc.core5.http.HttpHost;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.security.oauth2.client.AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.InMemoryReactiveOAuth2AuthorizedClientService;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.ReactiveOAuth2AuthorizedClientProvider;
import org.springframework.security.oauth2.client.ReactiveOAuth2AuthorizedClientProviderBuilder;
import org.springframework.security.oauth2.client.endpoint.WebClientReactiveClientCredentialsTokenResponseClient;
......@@ -13,13 +23,12 @@ import org.springframework.security.oauth2.client.registration.ReactiveClientReg
import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestClient;
import org.springframework.web.reactive.function.client.WebClient;
import de.ozgcloud.nachrichten.postfach.osiv2.gen.ApiClient;
import de.ozgcloud.nachrichten.postfach.osiv2.gen.api.MessageExchangeApi;
import lombok.RequiredArgsConstructor;
import reactor.netty.http.client.HttpClient;
import reactor.netty.transport.ProxyProvider;
@Configuration
@RequiredArgsConstructor
......@@ -34,6 +43,41 @@ public class ApiClientConfiguration {
return new MessageExchangeApi(apiClient);
}
@Bean
ApiClient apiClient(OAuth2AuthorizedClientManager authorizedClientManager) {
RestClient restClient = RestClient.builder()
.requestFactory(createProxyRequestFactory())
.requestInterceptor(createOAuth2Interceptor(authorizedClientManager))
.baseUrl(apiConfiguration.getUrl()).build();
return new ApiClient(restClient);
}
private ClientHttpRequestFactory createProxyRequestFactory(){
var requestFactory = new HttpComponentsClientHttpRequestFactory();
if(proxyConfiguration.isEnabled()){
var credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope(proxyConfiguration.getHost(), proxyConfiguration.getPort()),
new UsernamePasswordCredentials(proxyConfiguration.getUsername(), proxyConfiguration.getPassword().toCharArray())
);
var httpClient = HttpClientBuilder.create()
.setProxy(new HttpHost(proxyConfiguration.getHost(), proxyConfiguration.getPort()))
.setDefaultCredentialsProvider(credsProvider)
.build();
requestFactory.setHttpClient(httpClient);
}
return requestFactory;
}
private ClientHttpRequestInterceptor createOAuth2Interceptor(OAuth2AuthorizedClientManager authorizedClientManager) {
OAuth2ClientHttpRequestInterceptor interceptor = new OAuth2ClientHttpRequestInterceptor(authorizedClientManager);
}
@Bean
ApiClient apiClient(ReactiveClientRegistrationRepository clientRegistrations) {
return new ApiClient(osi2PostfachWebClient(clientRegistrations))
......
......@@ -21,21 +21,21 @@ public record PostfachApiFacadeService(MessageExchangeApi messageExchangeApi, Re
messageExchangeApi.sendMessage(
requestMapper.mapMailboxId(nachricht),
requestMapper.mapOutSendMessageRequestV2(nachricht)
).block();
);
}
public Stream<PostfachNachricht> receiveMessages() {
var response = messageExchangeApi.receiveMessages(MAX_NUMBER_RECEIVED_MESSAGES, 0).block();
var response = messageExchangeApi.receiveMessages(MAX_NUMBER_RECEIVED_MESSAGES, 0);
return response.getMessages().stream().map(this::fetchMessageByGuid);
}
PostfachNachricht fetchMessageByGuid(final MessageExchangeReceiveMessage message) {
var messageReply = messageExchangeApi.getMessage(message.getGuid()).block();
var messageReply = messageExchangeApi.getMessage(message.getGuid());
return responseMapper.toPostfachNachricht(messageReply);
}
public void deleteMessage(final String messageId) {
messageExchangeApi.deleteMessage(UUID.fromString(messageId)).block();
messageExchangeApi.deleteMessage(UUID.fromString(messageId));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment