Skip to content

Commit 707ac06

Browse files
authored
Merge pull request #47 from RestComm/CCN-7825
feat: getting GET response with headers (for Profiles that belongs to an
2 parents 5b4b8af + a51e503 commit 707ac06

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

src/main/java/org/restcomm/sdk/HttpClient.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,23 @@
55
import com.fasterxml.jackson.databind.JavaType;
66
import com.fasterxml.jackson.databind.ObjectMapper;
77
import org.apache.http.Consts;
8+
import org.apache.http.Header;
9+
import org.apache.http.HttpResponse;
810
import org.apache.http.client.fluent.Content;
911
import org.apache.http.client.fluent.Executor;
1012
import org.apache.http.client.fluent.Request;
13+
import org.apache.http.client.fluent.Response;
1114
import org.apache.http.entity.ContentType;
1215
import org.apache.http.message.BasicHeader;
1316
import org.apache.http.message.BasicNameValuePair;
1417
import org.restcomm.sdk.domain.Restful;
1518

19+
import java.io.ByteArrayOutputStream;
1620
import java.io.IOException;
21+
import java.io.InputStream;
22+
import java.io.StringReader;
23+
import java.io.StringWriter;
24+
import java.nio.charset.StandardCharsets;
1725
import java.util.Map;
1826
import java.util.stream.Collectors;
1927

@@ -66,6 +74,10 @@ public <T> T get(String url, Class<T> type) {
6674
return executeRequest(Request.Get(url), type);
6775
}
6876

77+
public <T> ExtendedResponse<T> getWithHeaders(String url, Class<T> type) {
78+
return executeRequestWithHeaders(Request.Get(url), type);
79+
}
80+
6981
public <T> T put(String url, Object entity, Class<T> type) {
7082
Request request = Request.Put(url);
7183
addRequestBody(request, entity);
@@ -146,4 +158,52 @@ private <T> T executeRequest(Request request, Class<T> type) {
146158
throw new RestcommClientException(e);
147159
}
148160
}
161+
162+
private <T> ExtendedResponse<T> executeRequestWithHeaders(Request request, Class<T> type) {
163+
try {
164+
request.addHeader(authoriztion);
165+
Response response = executor.execute(request);
166+
HttpResponse httpResponse = response.returnResponse();
167+
168+
InputStream inputStream = httpResponse.getEntity().getContent();
169+
ByteArrayOutputStream result = new ByteArrayOutputStream();
170+
byte[] buffer = new byte[1024];
171+
for (int length; (length = inputStream.read(buffer)) != -1;) {
172+
result.write(buffer, 0, length);
173+
}
174+
String responseContent = result.toString(StandardCharsets.UTF_8.name());
175+
if (responseContent.isEmpty()) {
176+
return null;
177+
}
178+
if (type.equals(String.class)) {
179+
return new ExtendedResponse<T>((T) response, new Header[0]);
180+
}
181+
T jsonRes = deserializer.readValue(responseContent, type);
182+
183+
ExtendedResponse<T> res = new ExtendedResponse<T>(jsonRes, httpResponse.getAllHeaders());
184+
return res;
185+
} catch (Exception e) {
186+
throw new RestcommClientException(e);
187+
}
188+
}
189+
190+
public static class ExtendedResponse<T> {
191+
private T jsonResponse;
192+
private Header[] headers;
193+
194+
public ExtendedResponse(T jsonResponse, Header[] headers) {
195+
this.jsonResponse = jsonResponse;
196+
this.headers = headers;
197+
}
198+
199+
public T getJsonResponse() {
200+
return jsonResponse;
201+
}
202+
203+
public Header[] getHeaders() {
204+
return headers;
205+
}
206+
207+
}
208+
149209
}

src/main/java/org/restcomm/sdk/endpoints/RestEndpoints.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ public T get(String id) {
2727
return httpClient.get(url + "/" + id, type);
2828
}
2929

30+
public HttpClient.ExtendedResponse<T> getWithHeaders(String id) {
31+
return httpClient.getWithHeaders(url + "/" + id, type);
32+
}
33+
3034
public List<T> find(Object query) {
3135
return httpClient.get(url, query, TypeFactory.defaultInstance().constructCollectionType(List.class, type));
3236
}

0 commit comments

Comments
 (0)