turned down some logging, moved getQHttpResponse into its own method in base api action utils, added override constructer to response to read bytes

This commit is contained in:
Tim Chamberlain
2025-03-28 16:12:45 -05:00
parent 491998ec9a
commit 473cc9c0ae
4 changed files with 89 additions and 7 deletions

View File

@ -743,6 +743,10 @@ public class BaseAPIActionUtil
case OAUTH2 -> request.setHeader("Authorization", "Bearer " + getOAuth2Token());
case API_KEY_QUERY_PARAM -> addApiKeyQueryParamToRequest(request);
case CUSTOM -> handleCustomAuthorization(request);
case NONE ->
{
/* nothing to do here */
}
default -> throw new IllegalArgumentException("Unexpected authorization type: " + backendMetaData.getAuthorizationType());
}
}
@ -1174,6 +1178,16 @@ public class BaseAPIActionUtil
/*******************************************************************************
**
*******************************************************************************/
protected QHttpResponse getQHttpResponse(HttpResponse response) throws Exception
{
return (new QHttpResponse(response));
}
/*******************************************************************************
**
*******************************************************************************/
@ -1207,7 +1221,7 @@ public class BaseAPIActionUtil
try(CloseableHttpResponse response = executeHttpRequest(request, httpClient))
{
QHttpResponse qResponse = new QHttpResponse(response);
QHttpResponse qResponse = getQHttpResponse(response);
logOutboundApiCall(request, qResponse);

View File

@ -40,6 +40,7 @@ public class QHttpResponse
private String statusReasonPhrase;
private List<Header> headerList;
private String content;
private byte[] contentBytes;
@ -53,11 +54,50 @@ public class QHttpResponse
/*******************************************************************************
** Constructor for QHttpResponse that allows reading content as bytes
**
*******************************************************************************/
public QHttpResponse(HttpResponse httpResponse, boolean readContentAsBytes) throws Exception
{
setGeneralHttpResponseData(httpResponse);
if(this.statusCode == null || this.statusCode != 204)
{
if(readContentAsBytes)
{
this.contentBytes = httpResponse.getEntity().getContent().readAllBytes();
}
else
{
this.content = EntityUtils.toString(httpResponse.getEntity());
}
}
}
/*******************************************************************************
** Constructor for qHttpResponse
**
*******************************************************************************/
public QHttpResponse(HttpResponse httpResponse) throws Exception
{
setGeneralHttpResponseData(httpResponse);
if(this.statusCode == null || this.statusCode != 204)
{
this.content = EntityUtils.toString(httpResponse.getEntity());
}
}
/*******************************************************************************
** Sets data into this entity from an HttpResponse but doesnt read response data
**
*******************************************************************************/
private void setGeneralHttpResponseData(HttpResponse httpResponse) throws Exception
{
this.headerList = Arrays.asList(httpResponse.getAllHeaders());
if(httpResponse.getStatusLine() != null)
@ -69,11 +109,6 @@ public class QHttpResponse
this.statusProtocolVersion = httpResponse.getStatusLine().getProtocolVersion().toString();
}
}
if(this.statusCode == null || this.statusCode != 204)
{
this.content = EntityUtils.toString(httpResponse.getEntity());
}
}
@ -242,4 +277,35 @@ public class QHttpResponse
return (this);
}
/*******************************************************************************
** Getter for contentBytes
*******************************************************************************/
public byte[] getContentBytes()
{
return (this.contentBytes);
}
/*******************************************************************************
** Setter for contentBytes
*******************************************************************************/
public void setContentBytes(byte[] contentBytes)
{
this.contentBytes = contentBytes;
}
/*******************************************************************************
** Fluent setter for contentBytes
*******************************************************************************/
public QHttpResponse withContentBytes(byte[] contentBytes)
{
this.contentBytes = contentBytes;
return (this);
}
}

View File

@ -33,5 +33,6 @@ public enum AuthorizationType
BASIC_AUTH_USERNAME_PASSWORD,
CUSTOM,
OAUTH2,
NONE,
API_KEY_QUERY_PARAM,
}