Skip to content
This repository has been archived by the owner on Apr 17, 2023. It is now read-only.

Initial version to identify clients and logging the actual client #182

Merged
merged 1 commit into from Jun 2, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -68,6 +68,7 @@ public Response send(final Map<String, Object> message, @Context HttpServletRequ

// submitted to @Async EJB:
senderService.send(pushApplication, payload);
logger.log(Level.FINE, "Message sent by: '" + HttpRequestUtil.extractAeroGearSenderInformation(request) + "'");
logger.log(Level.INFO, "Message submitted to PushNetworks for further processing");

return Response.status(Status.OK)
Expand Down
Expand Up @@ -46,6 +46,19 @@ public static String extractIPAddress(final HttpServletRequest request) {
return request.getRemoteAddr();
}

/**
* Reads the "aerogear-sender" header to check if an AeroGear Sender client was used. If the header value is NULL
* the value of the standard "user-agent" header is returned
*/
public static String extractAeroGearSenderInformation(final HttpServletRequest request) {
String client = request.getHeader("aerogear-sender");
if (hasValue(client)) {
return client;
}
// if there was no usage of our custom header, we simply return the user-agent value
return request.getHeader("user-agent");
}

private static boolean hasValue(String value) {
return value != null && !value.isEmpty() && !"unknown".equalsIgnoreCase(value);
}
Expand Down
Expand Up @@ -74,4 +74,26 @@ public void extractXForwardForHeader() {
assertThat(remoteAddress).isNotNull();
assertThat(remoteAddress).isEqualTo("127.0.0.1");
}

@Test
public void extractAeroGearSenderHeader() {
final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
Mockito.when(request.getHeader("aerogear-sender")).thenReturn("Java Sender");

final String client = HttpRequestUtil.extractAeroGearSenderInformation(request);

assertThat(client).isNotNull();
assertThat(client).isEqualTo("Java Sender");
}
@Test
public void extractAeroGearSenderHeaderViaUserAgent() {
final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
Mockito.when(request.getHeader("aerogear-sender")).thenReturn(null);
Mockito.when(request.getHeader("user-agent")).thenReturn("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2)");

final String client = HttpRequestUtil.extractAeroGearSenderInformation(request);

assertThat(client).isNotNull();
assertThat(client).isEqualTo("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2)");
}
}