Project

General

Profile

1 60749 akoulalis
package eu.dnetlib.repo.manager.utils;
2
3
import com.google.gson.JsonElement;
4
import com.google.gson.JsonObject;
5
import com.google.gson.JsonParser;
6
import org.apache.commons.codec.binary.Base64;
7
import org.apache.log4j.Logger;
8
import org.springframework.beans.factory.annotation.Value;
9
import org.springframework.http.*;
10
import org.springframework.stereotype.Component;
11
import org.springframework.web.client.RestTemplate;
12
13
import java.nio.charset.Charset;
14
import java.util.Map;
15
16
@Component
17
public class HttpUtils {
18
19
    private static final Logger logger = Logger.getLogger(HttpUtils.class);
20
21
    // TODO: To be changed the values
22
//    @Value("https://aai.openaire.eu/registry/")
23
    @Value("https://openaire-dev.aai-dev.grnet.gr/registry/")
24
    private String issuer;
25
26
    @Value("kostis30fylloy")
27
    private String user;
28
29
    @Value("fynhWc7F*2y4me4U")
30
    private String password;
31
32
    public JsonElement post(String path, JsonObject body) {
33
        RestTemplate restTemplate = new RestTemplate();
34
        HttpHeaders headers = createHeaders(user, password);
35
        headers.setContentType(MediaType.APPLICATION_JSON);
36
        HttpEntity<String> request = new HttpEntity<>(body.toString(), headers);
37
        ResponseEntity<String> responseEntity = restTemplate.exchange(issuer + path, HttpMethod.POST, request, String.class);
38
        if(responseEntity.getBody() != null) {
39
            return new JsonParser().parse(responseEntity.getBody());
40
        } else {
41
            return null;
42
        }
43
    }
44
45
    public JsonElement put(String path, JsonObject body) {
46
        RestTemplate restTemplate = new RestTemplate();
47
        HttpHeaders headers = createHeaders(user, password);
48
        headers.setContentType(MediaType.APPLICATION_JSON);
49
        HttpEntity<String> request = new HttpEntity<>(body.toString(), headers);
50
        ResponseEntity<String> responseEntity = restTemplate.exchange(issuer + path, HttpMethod.PUT, request, String.class);
51
        if(responseEntity.getBody() != null) {
52
            return new JsonParser().parse(responseEntity.getBody());
53
        } else {
54
            return null;
55
        }
56
    }
57
58
    public JsonElement get(String path, Map<String, String> params) {
59
        RestTemplate restTemplate = new RestTemplate();
60
        String url = issuer + path + ((params != null) ? createParams(params) : null);
61
        ResponseEntity<String> responseEntity = restTemplate.exchange
62
                (url, HttpMethod.GET, new HttpEntity<>(createHeaders(user, password)), String.class);
63
        if(responseEntity.getBody() != null) {
64
            return new JsonParser().parse(responseEntity.getBody());
65
        } else {
66
            return null;
67
        }
68
    }
69
70
    public JsonElement delete(String path) {
71
        RestTemplate restTemplate = new RestTemplate();
72
        String url = issuer + path;
73
        ResponseEntity<String> responseEntity = restTemplate.exchange
74
                (url, HttpMethod.DELETE, new HttpEntity<>(createHeaders(user, password)), String.class);
75
        if(responseEntity.getBody() != null) {
76
            return new JsonParser().parse(responseEntity.getBody());
77
        } else {
78
            return null;
79
        }
80
    }
81
82
83
    private String createParams(Map<String, String> params) {
84
        StringBuilder ret = new StringBuilder("?");
85
        int count = 0;
86
        for (Map.Entry<String, String> param : params.entrySet()) {
87
            ret.append(param.getKey()).append("=").append(param.getValue());
88
            count++;
89
            if (count != params.entrySet().size()) {
90
                ret.append("&");
91
            }
92
        }
93
        return ret.toString();
94
    }
95
96
    private HttpHeaders createHeaders(String username, String password) {
97
        return new HttpHeaders() {{
98
            String auth = username + ":" + password;
99
            byte[] encodedAuth = Base64.encodeBase64(
100
                    auth.getBytes(Charset.forName("US-ASCII")));
101
            String authHeader = "Basic " + new String(encodedAuth);
102
            set("Authorization", authHeader);
103
        }};
104
    }
105
}