package ca.uhn.fhirtest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.ui.ModelMap;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.context.request.WebRequestInterceptor;
import ca.uhn.fhir.jpa.provider.BaseJpaProvider;
public class RequestInterceptor implements WebRequestInterceptor {
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(RequestInterceptor.class);
@Override
public void afterCompletion(WebRequest theArg0, Exception theArg1) throws Exception {
org.slf4j.MDC.remove(BaseJpaProvider.REMOTE_ADDR);
org.slf4j.MDC.remove(BaseJpaProvider.REMOTE_UA);
}
@Override
public void postHandle(WebRequest theArg0, ModelMap theArg1) throws Exception {
// nothing
}
@Override
public void preHandle(WebRequest theRequest) throws Exception {
String[] forwardedFors = theRequest.getHeaderValues("x-forwarded-for");
StringBuilder b = new StringBuilder();
if (forwardedFors != null) {
for (String enums : forwardedFors) {
if (b.length() > 0) {
b.append(" / ");
}
b.append(enums);
}
}
String forwardedFor = b.toString();
org.slf4j.MDC.put(BaseJpaProvider.REMOTE_ADDR, forwardedFor);
String userAgent = StringUtils.defaultString(theRequest.getHeader("user-agent"));
org.slf4j.MDC.put(BaseJpaProvider.REMOTE_UA, userAgent);
ourLog.trace("User agent is: {}", userAgent);
}
}