Skip to content

Commit

Permalink
patch TRANSFER_ENCODING header rsp removed
Browse files Browse the repository at this point in the history
  • Loading branch information
pasqualespica committed May 20, 2024
1 parent cfa984a commit f03f768
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 103 deletions.
28 changes: 17 additions & 11 deletions src/main/java/it/gov/pagopa/forwarder/service/ProxyService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,22 @@
import it.gov.pagopa.forwarder.exception.AppException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.config.ConnectionConfig;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.client.*;
import org.springframework.retry.annotation.Backoff;
import org.springframework.retry.annotation.Recover;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.client.HttpStatusCodeException;
import org.springframework.web.client.ResourceAccessException;
import org.springframework.web.client.RestTemplate;
Expand All @@ -42,7 +39,6 @@
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.concurrent.TimeUnit;


@Service
Expand Down Expand Up @@ -90,7 +86,7 @@ public ResponseEntity<String> processProxyRequest(
}
headers.set(X_REQUEST_ID, xRequestId);
headers.set(HttpHeaders.HOST, xHostUrl);
headers.remove(HttpHeaders.ACCEPT_ENCODING);
//headers.remove(HttpHeaders.ACCEPT_ENCODING);
headers.remove(OCP_APIM_SUBSCRIPTION_KEY); // remove subkey's header

// construct URI for the request
Expand All @@ -114,9 +110,6 @@ public ResponseEntity<String> processProxyRequest(
logger.info("https req {} >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> {} body {}\n", method, uri, httpEntity);

ResponseEntity<String> serverResponse = restTemplate.exchange(uri, method, httpEntity, String.class);
HttpHeaders responseHeaders = new HttpHeaders();
List<String> value = serverResponse.getHeaders().get(HttpHeaders.CONTENT_TYPE);
responseHeaders.put(HttpHeaders.CONTENT_TYPE, value != null ? value : new ArrayList<>());
logger.info("server resp {}", serverResponse);
return serverResponse;
} catch (HttpStatusCodeException e) {
Expand Down Expand Up @@ -167,7 +160,20 @@ private void setRestTemplate() throws IOException, UnrecoverableKeyException, Ce
.build();

ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
this.restTemplate = new RestTemplate(requestFactory);
RestTemplate restTemp = new RestTemplate(requestFactory);


List<ClientHttpRequestInterceptor> interceptors = restTemp.getInterceptors();
if (CollectionUtils.isEmpty(interceptors)) {
interceptors = new ArrayList<>();
}
interceptors.add(new RestTemplateHeaderModifierInterceptor());
restTemp.setInterceptors(interceptors);

this.restTemplate = restTemp;



}

@Recover
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package it.gov.pagopa.forwarder.service;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;

import java.io.IOException;

// www.baeldung.com/spring-rest-template-interceptor
public class RestTemplateHeaderModifierInterceptor
implements ClientHttpRequestInterceptor {

@Override
public ClientHttpResponse intercept(
HttpRequest request,
byte[] body,
ClientHttpRequestExecution execution) throws IOException {

ClientHttpResponse response = execution.execute(request, body);
response.getHeaders().remove(HttpHeaders.TRANSFER_ENCODING);
return response;
}
}
3 changes: 2 additions & 1 deletion src/main/resources/application-local.properties
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,5 @@ iMP79MzURwNFbriSCYhh9zLLwcfJvwaOaDUy9lzgj/8za9+QkSulp1wqt6U=\n\
# Connection Pool
# default values
pool.max-connection=20
pool.max-connection.per-reoute=2
pool.max-connection.per-route=2
pool.timeout=8
91 changes: 0 additions & 91 deletions src/main/resources/application-local.properties.local

This file was deleted.

0 comments on commit f03f768

Please sign in to comment.