47 lines
1.9 KiB
Java
47 lines
1.9 KiB
Java
package eu.eudat.repository;
|
|
|
|
import eu.eudat.depositinterface.models.DMPDepositModel;
|
|
import eu.eudat.depositinterface.repository.RepositoryDeposit;
|
|
import eu.eudat.depositinterface.repository.RepositoryDepositConfiguration;
|
|
import org.springframework.core.ParameterizedTypeReference;
|
|
import org.springframework.web.reactive.function.client.WebClient;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public class DepositRepository implements RepositoryDeposit {
|
|
|
|
private final WebClient depositClient;
|
|
private final List<String> configurationIds;
|
|
|
|
public DepositRepository(WebClient depositClient) {
|
|
this.depositClient = depositClient;
|
|
this.configurationIds = new ArrayList<>();
|
|
}
|
|
|
|
|
|
@Override
|
|
public String deposit(String repositoryId, DMPDepositModel dmpDepositModel, String repositoryAccessToken) throws Exception {
|
|
return depositClient.post().uri("/" + repositoryId, uriBuilder -> uriBuilder.queryParam("authToken", repositoryAccessToken).build()).bodyValue(dmpDepositModel).exchangeToMono(mono -> mono.bodyToMono(String.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public String authenticate(String repositoryId, String code) {
|
|
return depositClient.get().uri("/authenticate/" + repositoryId, uriBuilder -> uriBuilder.queryParam("authToken", code).build()).exchangeToMono(mono -> mono.bodyToMono(String.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public List<RepositoryDepositConfiguration> getConfiguration() {
|
|
return depositClient.get().uri("/configuration").exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference<List<RepositoryDepositConfiguration>>() {})).block();
|
|
}
|
|
|
|
@Override
|
|
public String getLogo(String repositoryId) {
|
|
return depositClient.get().uri("/logo/" + repositoryId).exchangeToMono(mono -> mono.bodyToMono(String.class)).block();
|
|
}
|
|
|
|
public List<String> getConfigurationIds() {
|
|
return configurationIds;
|
|
}
|
|
}
|