argos/dmp-backend/core/src/main/java/eu/eudat/repository/TransformerRepository.java

55 lines
2.7 KiB
Java
Raw Normal View History

2023-12-18 11:55:19 +01:00
package eu.eudat.repository;
2024-03-06 17:18:10 +01:00
import eu.eudat.commonmodels.models.FileEnvelopeModel;
import eu.eudat.commonmodels.models.description.DescriptionModel;
import eu.eudat.commonmodels.models.dmp.DmpModel;
2024-01-05 17:06:16 +01:00
import eu.eudat.file.transformer.interfaces.FileTransformerClient;
import eu.eudat.file.transformer.interfaces.FileTransformerConfiguration;
2023-12-18 11:55:19 +01:00
import org.springframework.core.ParameterizedTypeReference;
2024-03-22 12:49:26 +01:00
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
2023-12-18 11:55:19 +01:00
import org.springframework.web.reactive.function.client.WebClient;
2024-03-28 10:43:12 +01:00
import reactor.core.publisher.Mono;
2023-12-18 11:55:19 +01:00
2024-01-05 17:06:16 +01:00
public class TransformerRepository implements FileTransformerClient {
2023-12-18 11:55:19 +01:00
private final WebClient transformerClient;
public TransformerRepository(WebClient transformerClient) {
this.transformerClient = transformerClient;
}
@Override
2024-03-06 17:18:10 +01:00
public FileEnvelopeModel exportDmp(DmpModel dmpModel, String format) {
2024-03-28 10:43:12 +01:00
return transformerClient.post().uri("/export/dmp", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(dmpModel)
.exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(FileEnvelopeModel.class)).block();
2023-12-18 11:55:19 +01:00
}
@Override
2024-03-06 17:18:10 +01:00
public DmpModel importDmp(FileEnvelopeModel fileEnvelope) {
2024-03-28 10:43:12 +01:00
return transformerClient.post().uri("/import/dmp").bodyValue(fileEnvelope)
.exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(DmpModel.class)).block();
2023-12-18 11:55:19 +01:00
}
@Override
2024-03-06 17:18:10 +01:00
public FileEnvelopeModel exportDescription(DescriptionModel descriptionModel, String format) {
2024-03-28 10:43:12 +01:00
return transformerClient.post().uri("/export/description", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(descriptionModel)
.exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(FileEnvelopeModel.class)).block();
2023-12-18 11:55:19 +01:00
}
@Override
2024-03-06 17:18:10 +01:00
public DescriptionModel importDescription(FileEnvelopeModel fileEnvelope) {
2024-03-28 10:43:12 +01:00
return transformerClient.post().uri("/import/description").bodyValue(fileEnvelope)
.exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(DescriptionModel.class)).block();
2023-12-18 11:55:19 +01:00
}
@Override
2024-01-05 17:06:16 +01:00
public FileTransformerConfiguration getConfiguration() {
2024-03-28 10:43:12 +01:00
return transformerClient.get().uri("/formats")
.exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(new ParameterizedTypeReference<FileTransformerConfiguration>() {})).block();
2023-12-18 11:55:19 +01:00
}
}