Skip to content

Commit

Permalink
Update pic-sure to pass request-source header
Browse files Browse the repository at this point in the history
I am making it such that the request-source header is passed to submodules so it can be used in control flow.
  • Loading branch information
Gcolon021 committed Jun 27, 2023
1 parent 3beca5b commit af5dbd4
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -246,9 +246,10 @@ public Response querySync(QueryRequest queryRequest, HttpHeaders headers) {
queryRequest.setResourceCredentials(new HashMap<>());
}

String requestSource = Utilities.getRequestSourceFromHeader(headers);
logger.info("path=/query/sync, resourceId={}, requestSource={}, queryRequest={}",
queryRequest.getResourceUUID(),
Utilities.getRequestSourceFromHeader(headers),
requestSource,
Utilities.convertQueryRequestToString(mapper, queryRequest)
);

Expand All @@ -270,8 +271,7 @@ public Response querySync(QueryRequest queryRequest, HttpHeaders headers) {
queryEntity.setQuery(queryJson);
queryRepo.persist(queryEntity);
queryRequest.getResourceCredentials().put(ResourceWebClient.BEARER_TOKEN_KEY, resource.getToken());

Response syncResponse = resourceWebClient.querySync(resource.getResourceRSPath(), queryRequest);
Response syncResponse = resourceWebClient.querySync(resource.getResourceRSPath(), queryRequest, requestSource);
String queryMetadata = queryEntity.getUuid().toString(); // if no response ID, use the queryID (maintain behavior)

if (syncResponse.getHeaders() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;

Expand Down Expand Up @@ -238,7 +237,7 @@ public Response queryFormat(String rsURL, QueryRequest queryRequest){
}
}

public Response querySync(String rsURL, QueryRequest queryRequest) {
public Response querySync(String rsURL, QueryRequest queryRequest, String requestSource) {
logger.debug("Calling ResourceWebClient querySync()");
try {
if (queryRequest == null) {
Expand All @@ -253,7 +252,20 @@ public Response querySync(String rsURL, QueryRequest queryRequest) {

String pathName = "/query/sync";
String body = json.writeValueAsString(queryRequest);
HttpResponse resourcesResponse = retrievePostResponse(composeURL(rsURL, pathName), createHeaders(queryRequest.getResourceCredentials()), body);


Header[] headers = createHeaders(queryRequest.getResourceCredentials());
if (requestSource != null) {
Header sourceHeader = new BasicHeader("request-source", requestSource);

// Add the source header to the headers array.
Header[] newHeaders = new Header[headers.length + 1];
System.arraycopy(headers, 0, newHeaders, 0, headers.length);
newHeaders[headers.length] = sourceHeader;
headers = newHeaders;
}

HttpResponse resourcesResponse = retrievePostResponse(composeURL(rsURL, pathName), headers, body);
if (resourcesResponse.getStatusLine().getStatusCode() != 200) {
throwError(resourcesResponse, rsURL);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@ public class HeaderFilter implements ContainerRequestFilter {

@Override
public void filter(ContainerRequestContext containerRequestContext) {
logger.info("HeaderFilter called with headers: " + containerRequestContext.getHeaders().toString());
MultivaluedMap<String, String> httpHeaders = containerRequestContext.getHeaders();
headers.setHeaders(httpHeaders);
if (containerRequestContext.getUriInfo().getPath().startsWith("/visualization")) {
logger.info("HeaderFilter called for path: /visualization with headers: " + containerRequestContext.getHeaders().toString());
MultivaluedMap<String, String> httpHeaders = containerRequestContext.getHeaders();
headers.setHeaders(httpHeaders);
}
}
}

0 comments on commit af5dbd4

Please sign in to comment.