49 lines
2.7 KiB
Java
49 lines
2.7 KiB
Java
package eu.eudat.repository;
|
|
|
|
import eu.eudat.commonmodels.models.FileEnvelopeModel;
|
|
import eu.eudat.commonmodels.models.description.DescriptionModel;
|
|
import eu.eudat.commonmodels.models.dmp.DmpModel;
|
|
import eu.eudat.file.transformer.interfaces.FileTransformerClient;
|
|
import eu.eudat.file.transformer.interfaces.FileTransformerConfiguration;
|
|
import org.springframework.core.ParameterizedTypeReference;
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.web.reactive.function.client.WebClient;
|
|
|
|
|
|
public class TransformerRepository implements FileTransformerClient {
|
|
|
|
private final WebClient transformerClient;
|
|
|
|
public TransformerRepository(WebClient transformerClient) {
|
|
this.transformerClient = transformerClient;
|
|
}
|
|
|
|
@Override
|
|
public FileEnvelopeModel exportDmp(DmpModel dmpModel, String format) {
|
|
return transformerClient.post().uri("/export/dmp", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(dmpModel).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(FileEnvelopeModel.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public DmpModel importDmp(FileEnvelopeModel fileEnvelope) {
|
|
return transformerClient.post().uri("/import/dmp").bodyValue(fileEnvelope).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(DmpModel.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public FileEnvelopeModel exportDescription(DescriptionModel descriptionModel, String format) {
|
|
return transformerClient.post().uri("/export/description", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(descriptionModel).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(FileEnvelopeModel.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public DescriptionModel importDescription(FileEnvelopeModel fileEnvelope) {
|
|
return transformerClient.post().uri("/import/description").bodyValue(fileEnvelope).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(DescriptionModel.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public FileTransformerConfiguration getConfiguration() {
|
|
return transformerClient.get().uri("/formats").header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference<FileTransformerConfiguration>() {})).block();
|
|
}
|
|
|
|
|
|
}
|