Project

General

Profile

1 60509 k.triantaf
package eu.dnetlib.uoaadmintools.services;
2
3
import eu.dnetlib.uoaadmintools.configuration.properties.ManagersApiConfig;
4
import eu.dnetlib.uoaadmintools.entities.Manager;
5
import eu.dnetlib.uoaadmintools.entities.curator.Response;
6
import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.http.HttpStatus;
9
import org.springframework.http.ResponseEntity;
10
import org.springframework.stereotype.Service;
11
import org.springframework.web.client.RestTemplate;
12
13
@Service
14
public class ManagerService {
15
16 60554 k.triantaf
    enum Type {
17
        EMAIL,
18
        ID
19
    }
20
21 60509 k.triantaf
    @Autowired
22
    private ManagersApiConfig config;
23
24
    @Autowired
25
    private RestTemplate restTemplate;
26
27
    public Manager[] getManagers(String pid) {
28 60554 k.triantaf
        return getManagers(pid, Type.EMAIL);
29
    }
30
31
    public Manager[] getManagers(String pid, Type type) {
32
        String url = (type == Type.EMAIL)?config.getEmail():config.getId();
33
        ResponseEntity<Response> responseEntity = restTemplate.getForEntity(url.replace("{community}", pid), Response.class);
34 60509 k.triantaf
        Response response = responseEntity.getBody();
35
        if (response != null && responseEntity.getStatusCode() == HttpStatus.OK) {
36
            return response.getResponse();
37
        } else {
38
            throw new ContentNotFoundException("No managers has been found for community " + pid);
39
        }
40
    }
41
}