package eu.dnetlib.repo.manager.controllers; import eu.dnetlib.domain.data.PiwikInfo; import eu.dnetlib.repo.manager.service.PiWikServiceImpl; import eu.dnetlib.repo.manager.shared.RepositoryServiceException; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping(value = "/piwik") @Api(description = "Piwik API", tags = {"piwik"}) public class PiWikController { @Autowired PiWikServiceImpl piWikService; @RequestMapping(value = "/getPiwikSiteForRepo/{repositoryId}" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public PiwikInfo getPiwikSiteForRepo(@PathVariable("repositoryId") String repositoryId) { return piWikService.getPiwikSiteForRepo(repositoryId); } @RequestMapping(value = "/savePiwikInfo" , method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN') or (hasRole('ROLE_USER') " + "and #piwikInfo.requestorEmail == authentication.userInfo.email)") public PiwikInfo savePiwikInfo(@RequestBody PiwikInfo piwikInfo) { return piWikService.savePiwikInfo(piwikInfo); } @RequestMapping(value = "/getPiwikSitesForRepos" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE) List getPiwikSitesForRepos(){ return piWikService.getPiwikSitesForRepos(); } @RequestMapping(value = "/approvePiwikSite/{repositoryId}" , method = RequestMethod.GET) @ResponseBody @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN')") public ResponseEntity approvePiwikSite(@PathVariable("repositoryId") String repositoryId) { return piWikService.approvePiwikSite(repositoryId); } @RequestMapping(value = "/getOpenaireId/{repositoryId}" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody String getOpenaireId(String repositoryid){ return piWikService.getOpenaireId(repositoryid); } @RequestMapping(value = "/markPiwikSiteAsValidated/{repositoryId}" , method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseBody @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN')") public ResponseEntity markPiwikSiteAsValidated(@PathVariable("repositoryId") String repositoryId) throws RepositoryServiceException { return piWikService.markPiwikSiteAsValidated(repositoryId); } @RequestMapping(value = "/enableMetricsForRepository", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN') or (hasRole('ROLE_USER') and #piwikInfo.requestorEmail == authentication.userInfo.email)") public PiwikInfo enableMetricsForRepository(@RequestParam("officialName") String officialName, @RequestParam("repoWebsite") String repoWebsite, @RequestBody PiwikInfo piwikInfo) throws RepositoryServiceException { return piWikService.enableMetricsForRepository(officialName, repoWebsite, piwikInfo); } }