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.io.UnsupportedEncodingException;
14
import java.net.URLEncoder;
15
import java.nio.charset.Charset;
16
import java.nio.charset.StandardCharsets;
17
import java.util.Map;
18

    
19
@Component
20
public class HttpUtils {
21

    
22
    private static final Logger logger = Logger.getLogger(HttpUtils.class);
23

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

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

    
30
    @Value("${registry.password}")
31
    private String password;
32

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

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

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

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

    
83

    
84
    private String createParams(Map<String, String> params) {
85
        StringBuilder ret = new StringBuilder("?");
86
        int count = 0;
87
        for (Map.Entry<String, String> param : params.entrySet()) {
88
            ret.append(param.getKey()).append("=");
89
            try {
90
                ret.append(URLEncoder.encode(param.getValue(), StandardCharsets.UTF_8.toString()));
91
            } catch (UnsupportedEncodingException e) {
92
                logger.error("UnsupportedEncodingException on param " + param);
93
                return null;
94
            }
95
            count++;
96
            if (count != params.entrySet().size()) {
97
                ret.append("&");
98
            }
99
        }
100
        return ret.toString();
101
    }
102

    
103
    private HttpHeaders createHeaders(String username, String password) {
104
        return new HttpHeaders() {{
105
            String auth = username + ":" + password;
106
            byte[] encodedAuth = Base64.encodeBase64(
107
                    auth.getBytes(Charset.forName("US-ASCII")));
108
            String authHeader = "Basic " + new String(encodedAuth);
109
            set("Authorization", authHeader);
110
        }};
111
    }
112
}
(3-3/9)