diff --git a/bescheid-manager/pom.xml b/bescheid-manager/pom.xml index 7ec0199f426aca07fe75f0c8b95e3746168927d2..59b471729d249a87c7f6a358aef99043c53db00d 100644 --- a/bescheid-manager/pom.xml +++ b/bescheid-manager/pom.xml @@ -47,6 +47,11 @@ <groupId>net.devh</groupId> <artifactId>grpc-client-spring-boot-starter</artifactId> </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-webflux</artifactId> + </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/dummy/DummyBescheidRemoteService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/dummy/DummyBescheidRemoteService.java index 47eddc77608d320f300b7cbdf42ed2876f3ba3c4..0a35a6217a81b4f0262cdbda4564c465c8d5f392 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/dummy/DummyBescheidRemoteService.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/dummy/DummyBescheidRemoteService.java @@ -1,5 +1,6 @@ package de.ozgcloud.bescheid.dummy; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.stereotype.Service; import com.google.common.net.MediaType; @@ -11,6 +12,7 @@ import de.ozgcloud.bescheid.BescheidRequest; import de.ozgcloud.bescheid.vorgang.Vorgang; @Service +@ConditionalOnMissingBean(BescheidRemoteService.class) class DummyBescheidRemoteService implements BescheidRemoteService { private static final String DUMMY_BESCHEID_FILE_NAME = "dummy-bescheid.pdf"; diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java new file mode 100644 index 0000000000000000000000000000000000000000..fc385ca62d443589064a9ecb733a6b81aaf1cbaa --- /dev/null +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java @@ -0,0 +1,47 @@ +package de.ozgcloud.bescheid.smartdocuments; + +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.bescheid.Bescheid; +import de.ozgcloud.bescheid.BescheidRemoteService; +import de.ozgcloud.bescheid.BescheidRequest; +import de.ozgcloud.bescheid.vorgang.Vorgang; +import lombok.SneakyThrows; + +@Service +class SmartDocumentsBescheidRemoteService implements BescheidRemoteService { + + @Autowired + private WebClient webClient; + + @Autowired + private ObjectMapper objectMapper; + + @SneakyThrows + @Override + public Bescheid create(BescheidRequest request, Vorgang vorgang) { + System.out.println(objectMapper.writeValueAsString(createRequest())); + + var fluxy = webClient.post().accept(MediaType.APPLICATION_JSON) + .contentType(MediaType.APPLICATION_JSON) + .bodyValue(createRequest()) + .retrieve() + .bodyToFlux(Map.class); + + System.out.println("received: " + fluxy.blockFirst()); + + // TODO Auto-generated method stub + return null; + } + + private SmartDocumentsRequest createRequest() { + return SmartDocumentsRequest.builder().build(); + } +} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsConfiguration.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..627f2c741f3f94eaa48883c417d1addfa81e167a --- /dev/null +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsConfiguration.java @@ -0,0 +1,21 @@ +package de.ozgcloud.bescheid.smartdocuments; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.reactive.function.client.WebClient; + +@Configuration +class SmartDocumentsConfiguration { + + private static final String ADDR = "https://sandbox.smartdocuments.com/wsxmldeposit/deposit/unattended"; + + @Bean + WebClient smartDocumentsWebClient() { + return WebClient.builder() + .baseUrl(ADDR) + .defaultHeader("Authorization", "Basic aW50ZWdyYXRpb24tdXNlcjpXSEVtTkpUeTdHNVJ6R3M=") +// .filters(ExcahngeFunctions) + .build(); + } + +} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsRequest.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsRequest.java new file mode 100644 index 0000000000000000000000000000000000000000..3b839c3fe147eef636f7af4b106ff161437362d5 --- /dev/null +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsRequest.java @@ -0,0 +1,49 @@ +package de.ozgcloud.bescheid.smartdocuments; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +@JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class) +class SmartDocumentsRequest { + + @Builder.Default + private CustomerData customerData = CustomerData.builder().build(); + @Builder.Default + private SmartDocument smartDocument = SmartDocument.builder().build(); + + @Builder + @Getter + static class CustomerData { + @Builder.Default + private String gender = "Male"; + @Builder.Default + private String lastname = "Smith"; + } + + @Builder + @Getter + @JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class) + static class SmartDocument { + + @Builder.Default + @JsonProperty("Selection") + private Selection selection = Selection.builder().build(); + + @Builder + @Getter + @JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class) + static class Selection { + @Builder.Default + private String templateGroup = "Development"; + @Builder.Default + private String template = "integration-test"; + } + } + +} diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java index 3f5907b1cb0c0ac7c7eb386c3aa979e280fef1f2..ac54a3dbba08aeb4f2254606497ae148f040344f 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java @@ -13,11 +13,11 @@ public class BescheidRequestTestFactory { static final LocalDate BESCHEID_VOM = LocalDate.parse(BESCHEID_VOM_STRING); static final boolean GENEHMIGT = true; - static BescheidRequest create() { + public static BescheidRequest create() { return createBuilder().build(); } - static BescheidRequest.BescheidRequestBuilder createBuilder() { + public static BescheidRequest.BescheidRequestBuilder createBuilder() { return BescheidRequest.builder() .vorgangId(VORGANG_ID) .bescheidVom(BESCHEID_VOM) diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceITCase.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..d7fdea2c610e964573550399cd3dc49190e55388 --- /dev/null +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceITCase.java @@ -0,0 +1,21 @@ +package de.ozgcloud.bescheid.smartdocuments; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import de.itvsh.kop.common.test.ITCase; +import de.ozgcloud.bescheid.BescheidRequestTestFactory; +import de.ozgcloud.bescheid.vorgang.VorgangTestFactory; + +@ITCase +class SmartDocumentsBescheidRemoteServiceITCase { + + @Autowired + private SmartDocumentsBescheidRemoteService remoteService; + + @Test + void test() { + remoteService.create(BescheidRequestTestFactory.create(), VorgangTestFactory.create()); + } + +}