Project

General

Profile

1
package eu.dnetlib.openaire.usermanagement.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
    @Value("${registry.issuer}")
22
    private String issuer;
23

    
24
    @Value("${registry.user}")
25
    private String user;
26

    
27
    @Value("${registry.password}")
28
    private String password;
29

    
30
    public JsonElement post(String path, JsonObject body) {
31
        RestTemplate restTemplate = new RestTemplate();
32
        HttpHeaders headers = createHeaders(user, password);
33
        headers.setContentType(MediaType.APPLICATION_JSON);
34
        HttpEntity<String> request = new HttpEntity<>(body.toString(), headers);
35
        ResponseEntity<String> responseEntity = restTemplate.exchange(issuer + path, HttpMethod.POST, request, String.class);
36
        if (responseEntity.getBody() != null) {
37
            return new JsonParser().parse(responseEntity.getBody());
38
        } else {
39
            return null;
40
        }
41
    }
42

    
43
    public JsonElement put(String path, JsonObject body) {
44
        RestTemplate restTemplate = new RestTemplate();
45
        HttpHeaders headers = createHeaders(user, password);
46
        headers.setContentType(MediaType.APPLICATION_JSON);
47
        HttpEntity<String> request = new HttpEntity<>(body.toString(), headers);
48
        ResponseEntity<String> responseEntity = restTemplate.exchange(issuer + path, HttpMethod.PUT, request, String.class);
49
        if (responseEntity.getBody() != null) {
50
            return new JsonParser().parse(responseEntity.getBody());
51
        } else {
52
            return null;
53
        }
54
    }
55

    
56
    public JsonElement get(String path, Map<String, String> params) {
57
        RestTemplate restTemplate = new RestTemplate();
58
        String url = issuer + path + ((params != null) ? createParams(params) : null);
59
        ResponseEntity<String> responseEntity = restTemplate.exchange
60
                (url, HttpMethod.GET, new HttpEntity<>(createHeaders(user, password)), String.class);
61
        if (responseEntity.getBody() != null) {
62
            return new JsonParser().parse(responseEntity.getBody());
63
        } else {
64
            return null;
65
        }
66
    }
67

    
68
    public JsonElement delete(String path) {
69
        RestTemplate restTemplate = new RestTemplate();
70
        String url = issuer + path;
71
        ResponseEntity<String> responseEntity = restTemplate.exchange
72
                (url, HttpMethod.DELETE, new HttpEntity<>(createHeaders(user, password)), String.class);
73
        if (responseEntity.getBody() != null) {
74
            return new JsonParser().parse(responseEntity.getBody());
75
        } else {
76
            return null;
77
        }
78
    }
79

    
80

    
81
    private String createParams(Map<String, String> params) {
82
        StringBuilder ret = new StringBuilder("?");
83
        int count = 0;
84
        for (Map.Entry<String, String> param : params.entrySet()) {
85
            ret.append(param.getKey()).append("=");
86
            ret.append(param.getValue());
87
            count++;
88
            if (count != params.entrySet().size()) {
89
                ret.append("&");
90
            }
91
        }
92
        return ret.toString();
93
    }
94

    
95
    private HttpHeaders createHeaders(String username, String password) {
96
        return new HttpHeaders() {{
97
            String auth = username + ":" + password;
98
            byte[] encodedAuth = Base64.encodeBase64(
99
                    auth.getBytes(Charset.forName("US-ASCII")));
100
            String authHeader = "Basic " + new String(encodedAuth);
101
            set("Authorization", authHeader);
102
        }};
103
    }
104
}
(3-3/9)