2019-02-16 11:04:41 +01:00
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 )
2019-07-19 11:31:23 +02:00
@PreAuthorize ( " hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN') or (hasRole('ROLE_USER') " +
2019-02-16 11:04:41 +01:00
" 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 < PiwikInfo > getPiwikSitesForRepos ( ) {
return piWikService . getPiwikSitesForRepos ( ) ;
}
@RequestMapping ( value = " /approvePiwikSite/{repositoryId} " , method = RequestMethod . GET )
@ResponseBody
2019-07-19 11:31:23 +02:00
@PreAuthorize ( " hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN') " )
2019-02-16 11:04:41 +01:00
public ResponseEntity < Object > 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
2019-07-19 11:31:23 +02:00
@PreAuthorize ( " hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN') " )
2019-02-16 11:04:41 +01:00
public ResponseEntity < Object > markPiwikSiteAsValidated ( @PathVariable ( " repositoryId " ) String repositoryId ) throws RepositoryServiceException {
return piWikService . markPiwikSiteAsValidated ( repositoryId ) ;
}
@RequestMapping ( value = " /enableMetricsForRepository " , method = RequestMethod . POST ,
consumes = MediaType . APPLICATION_JSON_VALUE )
2019-07-19 11:31:23 +02:00
@PreAuthorize ( " hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN') or (hasRole('ROLE_USER') and #piwikInfo.requestorEmail == authentication.userInfo.email) " )
2019-02-16 11:04:41 +01:00
public PiwikInfo enableMetricsForRepository ( @RequestParam ( " officialName " ) String officialName ,
@RequestParam ( " repoWebsite " ) String repoWebsite ,
@RequestBody PiwikInfo piwikInfo ) throws RepositoryServiceException {
return piWikService . enableMetricsForRepository ( officialName , repoWebsite , piwikInfo ) ;
}
}