mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-06-18 21:45:04 +00:00
46 lines
1.8 KiB
Java
46 lines
1.8 KiB
Java
![]() |
package stirling.software.SPDF.config;
|
||
|
import java.util.regex.Matcher;
|
||
|
import java.util.regex.Pattern;
|
||
|
|
||
|
import org.springframework.web.servlet.HandlerInterceptor;
|
||
|
import org.springframework.web.servlet.ModelAndView;
|
||
|
|
||
|
import jakarta.servlet.http.HttpServletRequest;
|
||
|
import jakarta.servlet.http.HttpServletResponse;
|
||
|
|
||
|
public class CleanUrlInterceptor implements HandlerInterceptor {
|
||
|
|
||
|
private static final Pattern LANG_PATTERN = Pattern.compile("&?lang=([^&]+)");
|
||
|
|
||
|
@Override
|
||
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||
|
String queryString = request.getQueryString();
|
||
|
if (queryString != null && !queryString.isEmpty()) {
|
||
|
String requestURI = request.getRequestURI();
|
||
|
|
||
|
// Keep the lang parameter if it exists
|
||
|
Matcher langMatcher = LANG_PATTERN.matcher(queryString);
|
||
|
String langQueryString = langMatcher.find() ? "lang=" + langMatcher.group(1) : "";
|
||
|
|
||
|
// Check if there are any other query parameters besides the lang parameter
|
||
|
String remainingQueryString = queryString.replaceAll(LANG_PATTERN.pattern(), "").replaceAll("&+", "&").replaceAll("^&|&$", "");
|
||
|
|
||
|
if (!remainingQueryString.isEmpty()) {
|
||
|
// Redirect to the URL without other query parameters
|
||
|
String redirectUrl = requestURI + (langQueryString.isEmpty() ? "" : "?" + langQueryString);
|
||
|
response.sendRedirect(redirectUrl);
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
|
||
|
}
|
||
|
}
|