package org.apereo.cas.web.support; import org.springframework.web.servlet.AsyncHandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * This is {@link ThrottledSubmissionHandlerInterceptor}. * * @author Misagh Moayyed * @since 5.0.0 */ public interface ThrottledSubmissionHandlerInterceptor extends AsyncHandlerInterceptor { /** * Record submission failure. * * @param request the request */ default void recordSubmissionFailure(final HttpServletRequest request) { } /** * Determine whether threshold has been exceeded. * * @param request the request * @return true, if successful */ default boolean exceedsThreshold(final HttpServletRequest request) { return false; } /** * Gets name. * * @return the name */ default String getName() { return this.getClass().getSimpleName(); } /** * Decrement the the throttle so authentication can resume. */ void decrement(); @Override default void afterConcurrentHandlingStarted(final HttpServletRequest request, final HttpServletResponse response, final Object handler) throws Exception { } @Override default boolean preHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler) throws Exception { return true; } @Override default void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final ModelAndView modelAndView) throws Exception { } @Override default void afterCompletion(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final Exception ex) throws Exception { } }