aboutsummaryrefslogtreecommitdiff
path: root/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java
diff options
context:
space:
mode:
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.java36
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() {