This commit is contained in:
Aldo Mihasi 2022-12-30 16:10:30 +02:00
parent 7a4ce739ee
commit ffdc580f0f
2 changed files with 45 additions and 0 deletions

2
README.md Normal file
View File

@ -0,0 +1,2 @@
The repository-deposit-base module inlcudes the RepositoryDeposit interface which represents the mechanism of depositing a dmp to any
repository which mints a persistent digital object identifier (DOI) for each submission, which makes the stored dmps easily citeable.

View File

@ -2,12 +2,55 @@ package eu.eudat.depositinterface.repository;
import eu.eudat.depositinterface.models.DMPDepositModel;
/**
* The RepositoryDeposit interface represents the mechanism of depositing a dmp to any
* repository which mints a persistent digital object identifier (DOI) for each submission,
* which makes the stored dmps easily citeable.
*/
public interface RepositoryDeposit {
/**
* Returns a string representing the persistent digital object identifier (DOI) which
* was created.
*
* @param dmpDepositModel dmp structure which is to be deposited
* @param repositoryAccessToken access token needed for the authentication to the repository
* if this is null, another authentication mechanism is used for
* that repository e.g. api token which will be fetched from the
* repository's configuration
* @return a string representing the persistent digital object identifier (DOI)
* @throws Exception if an error occurs while trying to deposit the dmp
*/
String deposit(DMPDepositModel dmpDepositModel, String repositoryAccessToken) throws Exception;
/**
* Returns the access token from the oauth2 flow.
*
* @param code oauth2 authorization code
* @return the access token or null if no oauth2 protocol is not supported for that repository
*/
String authenticate(String code);
/**
* Returns the repository's configuration.
*
* @return structure representing the configuration of the repository <br>
* which includes the following fields: <br>
* depositType - an integer representing how the dmp user can deposit in the repository,
* 0 stands for system deposition meaning the dmp is deposited using argos credentials to the
* repository, 1 stands for user deposition in which the argos user specifies his/her own credentials
* to the repository, 2 stands for both ways deposition if the repository allows the deposits of dmps
* to be made from both argos and users accounts<br>
* repositoryId - unique identifier for the repository<br>
* accessToken - access token provided for the system type deposits<br>
* repositoryUrl - repository url<br>
* repositoryAuthorizationUrl - repository's authorization url<br>
* repositoryRecordUrl - repository's record url, this url is used to index dmps that are created<br>
* repositoryAccessTokenUrl - repository's access token url<br>
* repositoryClientId - repository's client id<br>
* repositoryClientSecret - repository's client secret<br>
* redirectUri - redirect uri to argos after the oauth2 flow from the repository<br>
*/
RepositoryDepositConfiguration getConfiguration();
}