package org.opencdmp.depositbase.repository; import org.opencdmp.commonmodels.models.dmp.DmpModel; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; /** * 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 DepositController { /** * Returns a string representing the persistent digital object identifier (DOI) which * was created. * * @param dmpDepositModel dmp structure which is to be deposited * @param authToken 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 */ @PostMapping() String deposit(@RequestBody DmpModel dmpDepositModel, @RequestParam("authToken")String authToken) 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 */ @GetMapping("/authenticate") String authenticate(@RequestParam("authToken") String code); /** * Returns the repository's configuration. * * @return List of structure representing the configuration of the repository
* which includes the following fields:
* 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
* repositoryId - unique identifier for the repository
* accessToken - access token provided for the system type deposits
* repositoryUrl - repository url
* repositoryAuthorizationUrl - repository's authorization url
* repositoryRecordUrl - repository's record url, this url is used to index dmps that are created
* repositoryAccessTokenUrl - repository's access token url
* repositoryClientId - repository's client id
* repositoryClientSecret - repository's client secret
* redirectUri - redirect uri to argos after the oauth2 flow from the repository
*/ @GetMapping("/configuration") DepositConfiguration getConfiguration(); /** * Returns the repository's logo if exists. * * @return the repository's logo in base64 form * */ @GetMapping("/logo") String getLogo(); }