package io.fathom.cloud.network.api.os.resources;
import java.io.IOException;
import java.net.URI;
import javax.inject.Singleton;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
@Provider
@PreMatching
public class StripExtensionFilter implements ContainerRequestFilter {
private static final Logger log = LoggerFactory.getLogger(StripExtensionFilter.class);
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
UriInfo uriInfo = requestContext.getUriInfo();
String path = uriInfo.getPath();
if (path.endsWith(".json")) {
if (!path.startsWith("/")) {
path = "/" + path;
}
if (path.startsWith("/openstack/network/")) {
path = path.substring(0, path.length() - 5);
URI uri = uriInfo.getRequestUri();
URI newUri = UriBuilder.fromUri(uri).replacePath(path).build();
log.info("Rewriting URI: {} -> {}", uri, newUri);
requestContext.setRequestUri(newUri);
}
}
}
}