package org.jabref.logic.importer;
import java.io.IOException;
import java.net.URL;
import java.util.Optional;
import org.jabref.model.entry.BibEntry;
/**
* This interface is used for classes that try to resolve a full-text PDF url for a BibTex entry.
* Implementing classes should specialize on specific article sites.
* See e.g. @link{http://libguides.mit.edu/apis}.
*/
@FunctionalInterface
public interface FulltextFetcher {
/**
* Tries to find a fulltext URL for a given BibTex entry.
*
* @param entry The Bibtex entry
* @return The fulltext PDF URL Optional, if found, or an empty Optional if not found.
* @throws NullPointerException if no BibTex entry is given
* @throws java.io.IOException
*/
Optional<URL> findFullText(BibEntry entry) throws IOException, FetcherException;
}