Spring Boot (Java)
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.client.RestTemplate;
import jakarta.servlet.http.*;
import java.util.Map;
@Component
public class DisposableEmailInterceptor implements HandlerInterceptor {
private final RestTemplate rest = new RestTemplate();
private final String apiKey = System.getenv("DG_KEY");
@Override
public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) {
String email = req.getParameter("email");
if (email == null) return true;
try {
String url = "https://api.disposableguard.com/v1/check?email=" +
java.net.URLEncoder.encode(email, java.nio.charset.StandardCharsets.UTF_8);
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + apiKey);
ResponseEntity<Map> response = rest.exchange(
url, HttpMethod.GET, new HttpEntity<>(headers), Map.class);
if (response.getStatusCode().is2xxSuccessful()) {
Boolean disposable = (Boolean) response.getBody().get("is_disposable");
if (Boolean.TRUE.equals(disposable)) {
res.setStatus(400);
res.setContentType("application/json");
res.getWriter().write("{\"error\":\"Please use a real email address.\"}");
return false;
}
}
} catch (Exception e) {
// fail-open
}
return true;
}
}Notes
Register the interceptor in a `WebMvcConfigurer` and apply it to your signup endpoint.