Project

General

Profile

1
package eu.dnetlib.repo.manager.controllers;
2

    
3
import eu.dnetlib.domain.data.PiwikInfo;
4
import eu.dnetlib.repo.manager.service.PiWikServiceImpl;
5
import eu.dnetlib.repo.manager.shared.RepositoryServiceException;
6
import io.swagger.annotations.Api;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.http.MediaType;
9
import org.springframework.http.ResponseEntity;
10
import org.springframework.security.access.prepost.PreAuthorize;
11
import org.springframework.web.bind.annotation.*;
12

    
13
import java.util.List;
14

    
15
@RestController
16
@RequestMapping(value = "/piwik")
17
@Api(description = "Piwik API",  tags = {"piwik"})
18
public class PiWikController {
19

    
20
    @Autowired
21
    PiWikServiceImpl piWikService;
22

    
23

    
24
    @RequestMapping(value = "/getPiwikSiteForRepo/{repositoryId}" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
25
    @ResponseBody
26
    public PiwikInfo getPiwikSiteForRepo(@PathVariable("repositoryId") String repositoryId) {
27
        return piWikService.getPiwikSiteForRepo(repositoryId);
28
    }
29

    
30
    @RequestMapping(value = "/savePiwikInfo" , method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
31
    @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN') or (hasRole('ROLE_USER') " +
32
            "and #piwikInfo.requestorEmail == authentication.userInfo.email)")
33
    public PiwikInfo savePiwikInfo(@RequestBody PiwikInfo piwikInfo) {
34
        return piWikService.savePiwikInfo(piwikInfo);
35
    }
36

    
37
    @RequestMapping(value = "/getPiwikSitesForRepos" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
38
    List<PiwikInfo> getPiwikSitesForRepos(){
39
        return piWikService.getPiwikSitesForRepos();
40
    }
41

    
42
    @RequestMapping(value = "/approvePiwikSite/{repositoryId}" , method = RequestMethod.GET)
43
    @ResponseBody
44
    @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN')")
45
    public ResponseEntity<Object> approvePiwikSite(@PathVariable("repositoryId") String repositoryId) {
46
        return piWikService.approvePiwikSite(repositoryId);
47
    }
48

    
49
    @RequestMapping(value = "/getOpenaireId/{repositoryId}" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
50
    @ResponseBody
51
    String getOpenaireId(String repositoryid){
52
        return piWikService.getOpenaireId(repositoryid);
53
    }
54

    
55
    @RequestMapping(value = "/markPiwikSiteAsValidated/{repositoryId}" , method = RequestMethod.POST,
56
            consumes = MediaType.APPLICATION_JSON_VALUE)
57
    @ResponseBody
58
    @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN')")
59
    public ResponseEntity<Object> markPiwikSiteAsValidated(@PathVariable("repositoryId") String repositoryId) throws RepositoryServiceException {
60
        return piWikService.markPiwikSiteAsValidated(repositoryId);
61
    }
62

    
63
    @RequestMapping(value = "/enableMetricsForRepository", method = RequestMethod.POST,
64
            consumes = MediaType.APPLICATION_JSON_VALUE)
65
    @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN') or (hasRole('ROLE_USER') and #piwikInfo.requestorEmail == authentication.userInfo.email)")
66
    public PiwikInfo enableMetricsForRepository(@RequestParam("officialName") String officialName,
67
                                                @RequestParam("repoWebsite") String repoWebsite,
68
                                                @RequestBody PiwikInfo piwikInfo) throws RepositoryServiceException {
69
        return piWikService.enableMetricsForRepository(officialName, repoWebsite, piwikInfo);
70
    }
71

    
72

    
73
}
(5-5/11)