package org.dcache.gplazma.oidc.helpers; import com.google.common.base.Charsets; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicHeader; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.map.ObjectMapper; import java.io.ByteArrayOutputStream; import java.io.IOException; public class JsonHttpClient { private HttpClient httpclient; public JsonHttpClient() { this.httpclient = HttpClients.createDefault(); } public JsonNode doGet(String url) throws IOException { return this.doGet(url, null); } public JsonNode doGet(String url, Header header) throws IOException { HttpGet httpGet = new HttpGet(url); if (header != null) { httpGet.addHeader(header); } HttpResponse response = httpclient.execute(httpGet); HttpEntity entity = response.getEntity(); if (entity != null) { return responseAsJson(entity); } else { return null; } } public JsonNode doGetWithToken(String url, String token) throws IOException { if (token != null && !token.isEmpty()) { return doGet(url, new BasicHeader("Authorization", "Bearer " + token)); } else { return null; } } private static JsonNode responseAsJson(HttpEntity response) throws IOException { ByteArrayOutputStream os = new ByteArrayOutputStream(); response.writeTo(os); String responseAsJson = new String(os.toByteArray(), Charsets.UTF_8); ObjectMapper mapper = new ObjectMapper(); JsonNode json = mapper.readValue(responseAsJson, JsonNode.class); return json; } }