diff options
Diffstat (limited to 'modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java')
-rw-r--r-- | modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java index bbb245f1..a64671ec 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java @@ -44,6 +44,7 @@ import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.google.common.collect.Lists; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.ErnpPersonRegisterResult; @@ -134,6 +135,9 @@ public class ErnpRestClient implements IErnpClient { private static final String HEADER_PVP_TXID = "pvp-txid"; private static final String HEADER_MSG_NOT_SET = "NOT-set"; + private static final String HEADER_ERNP_FEATURE_ADDRESS_ARRAY = "Json-Anschrift-Array"; + private static final String HEADER_ERNP_FEATURE_NEW_DATETIME_FORMAT = "Json-Use-Date-Type"; + @Autowired IConfiguration basicConfig; @Autowired @@ -319,6 +323,7 @@ public class ErnpRestClient implements IErnpClient { person.setFamilienname(eidData.getFamilyName()); person.setVorname(eidData.getGivenName()); person.setGeburtsdatum(buildErnpBirthday(eidData.getDateOfBirth())); + person.setGeschlecht(buildErnpGenderType()); ernpReq.setPersonendaten(person); buildNewEidasDocumens(ernpReq, eidData); @@ -387,6 +392,11 @@ public class ErnpRestClient implements IErnpClient { } + private String buildErnpGenderType() { + return basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_ERNPCLIENT_API_ADDPERSON_GENDER); + + } + @Nonnull private ErnpRegisterResult processErnpResponse(SuchenResponse resp, @Nonnull String citizenCountryCode, boolean forceSinglePersonMatch, @Nonnull String processStepFiendlyname) @@ -772,8 +782,7 @@ public class ErnpRestClient implements IErnpClient { } if (input.getGeschlecht() != null) { - person.setGeschlecht( - Personendaten.GeschlechtEnum.fromValue(input.getGeschlecht().getValue())); + person.setGeschlecht(input.getGeschlecht()); } return person; @@ -894,11 +903,32 @@ public class ErnpRestClient implements IErnpClient { final RestTemplate springClient = new RestTemplate(requestFactory); springClient.setErrorHandler(buildErrorHandler()); springClient.getMessageConverters().add(0, buildCustomJacksonObjectMapper()); - springClient.setInterceptors(Collections.singletonList(buildTransactionIdInterceptor())); + springClient.setInterceptors(Lists.newArrayList( + buildErnpFeatureHeaderInterceptor(), + buildTransactionIdInterceptor())); return springClient; } + private ClientHttpRequestInterceptor buildErnpFeatureHeaderInterceptor() { + return new ClientHttpRequestInterceptor() { + + @Override + public ClientHttpResponse intercept(HttpRequest request, byte[] body, + ClientHttpRequestExecution execution) throws IOException { + boolean ernpApi2023Enabled = basicConfig.getBasicConfigurationBoolean( + Constants.CONIG_PROPS_EIDAS_ERNPCLIENT_NEW_API_FEATURES, true); + if (ernpApi2023Enabled) { + log.debug("Injecting HTTP headers to enable new ERnP features ... "); + request.getHeaders().add(HEADER_ERNP_FEATURE_ADDRESS_ARRAY, String.valueOf(ernpApi2023Enabled)); + request.getHeaders().add(HEADER_ERNP_FEATURE_NEW_DATETIME_FORMAT, String.valueOf(ernpApi2023Enabled)); + } + + return execution.execute(request, body); + } + }; + } + private ClientHttpRequestInterceptor buildTransactionIdInterceptor() { return new ClientHttpRequestInterceptor() { |