package be.drissamri.service.verifier; import be.drissamri.service.exception.LinkshortenerException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class UrlVerifiers { private static final Logger LOGGER = LoggerFactory.getLogger(UrlVerifier.class); private static final String ENCODING_UTF8 = "UTF-8"; private final List<UrlVerifier> verifiers; @Autowired public UrlVerifiers(List<UrlVerifier> vrfrs) { this.verifiers = vrfrs; } public boolean isSafe(String url) { boolean safe = true; final String encodedUrl; try { encodedUrl = URLEncoder.encode(url, ENCODING_UTF8); } catch (UnsupportedEncodingException e) { LOGGER.warn("Unable to encode url: {}", url); throw new LinkshortenerException("Unable to encode to UTF-8", e); } for (UrlVerifier verifier : verifiers) { if (verifier != null) { boolean isValidByProvider = verifier.isSafe(encodedUrl); if (!isValidByProvider) { safe = false; break; } } } return safe; } }