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("=").append(param.getValue());
86
            count++;
87
            if (count != params.entrySet().size()) {
88
                ret.append("&");
89
            }
90
        }
91
        return ret.toString();
92
    }
93

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