Project

General

Profile

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

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

    
17
import java.util.List;
18

    
19
@RestController
20
@RequestMapping(value = "/piwik")
21
@Api(description = "Piwik API",  tags = {"piwik"})
22
public class PiWikController {
23

    
24
    @Autowired
25
    private PiWikServiceImpl piWikService;
26

    
27

    
28
    @RequestMapping(value = "/getPiwikSiteForRepo/{repositoryId}" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
29
    @ResponseBody
30
    public PiwikInfo getPiwikSiteForRepo(@PathVariable("repositoryId") String repositoryId) {
31
        return piWikService.getPiwikSiteForRepo(repositoryId);
32
    }
33

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

    
41
    @RequestMapping(value = "/getPiwikSitesForRepos" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
42
    @ApiImplicitParams({
43
            @ApiImplicitParam(name = "from", dataType = "number", paramType = "query"),
44
            @ApiImplicitParam(name = "quantity", dataType = "number", paramType = "query"),
45
            @ApiImplicitParam(name = "order", dataType = "eu.dnetlib.repo.manager.domain.OrderByType", paramType = "query"),
46
            @ApiImplicitParam(name = "searchField", dataType = "eu.dnetlib.repo.manager.domain.OrderByField", paramType = "query"),
47
            @ApiImplicitParam(name = "orderField", dataType = "string", paramType = "query"),
48
    })
49
    public List<PiwikInfo> getPiwikSitesForRepos(
50
            @RequestParam(value = "from",required=false,defaultValue = "0") int from,
51
            @RequestParam(value = "quantity",required=false,defaultValue = "100") int quantity,
52
            @RequestParam(value = "order",required=false,defaultValue = "ASC") OrderByType orderType,
53
            @RequestParam(value = "orderField", required = false, defaultValue = "REPOSITORY_NAME") OrderByField orderField,
54
            @RequestParam(value = "searchField", required = false, defaultValue = "") String searchField
55

    
56
    ){
57
        return piWikService.getPiwikSitesForRepos(orderField,orderType,from,quantity,searchField);
58
    }
59

    
60
    @RequestMapping(value = "/approvePiwikSite/{repositoryId}" , method = RequestMethod.GET)
61
    @ResponseBody
62
    @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN')")
63
    public ResponseEntity<Object> approvePiwikSite(@PathVariable("repositoryId") String repositoryId) {
64
        return piWikService.approvePiwikSite(repositoryId);
65
    }
66

    
67
    @RequestMapping(value = "/getOpenaireId/{repositoryId}" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
68
    @ResponseBody
69
    public String getOpenaireId(String repositoryid){
70
        return piWikService.getOpenaireId(repositoryid);
71
    }
72

    
73
    @RequestMapping(value = "/markPiwikSiteAsValidated/{repositoryId}" , method = RequestMethod.POST,
74
            consumes = MediaType.APPLICATION_JSON_VALUE)
75
    @ResponseBody
76
    @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN')")
77
    public ResponseEntity<Object> markPiwikSiteAsValidated(@PathVariable("repositoryId") String repositoryId) throws RepositoryServiceException {
78
        return piWikService.markPiwikSiteAsValidated(repositoryId);
79
    }
80

    
81
    @RequestMapping(value = "/enableMetricsForRepository", method = RequestMethod.POST,
82
            consumes = MediaType.APPLICATION_JSON_VALUE)
83
    @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_PROVIDE_ADMIN') or (hasRole('ROLE_USER') and #piwikInfo.requestorEmail == authentication.userInfo.email)")
84
    public PiwikInfo enableMetricsForRepository(@RequestParam("officialName") String officialName,
85
                                                @RequestParam("repoWebsite") String repoWebsite,
86
                                                @RequestBody PiwikInfo piwikInfo) throws RepositoryServiceException {
87
        return piWikService.enableMetricsForRepository(officialName, repoWebsite, piwikInfo);
88
    }
89

    
90

    
91
}
(5-5/11)