class HttpRequester extends IArtifactRequester {

    @Override
    public Optional<File> requestFile(Coordinate mavenCoordinate, Path targetDirectory, ClassifierInformation classifierInformation) {
        String jarBaseName = getExpectedJarBaseName(mavenCoordinate, classifierInformation);
        File localJarFile = targetDirectory.resolve(jarBaseName).toFile();

        if (localJarFile.exists()) {
            LOGGER.debug("The file " + localJarFile + " already exists and won't be downloaded again");
            return Optional.of(localJarFile);
        }

        Optional<File> downloadedFile = downloadFileFromUserUrl(mavenCoordinate, targetDirectory, jarBaseName);

        if (!downloadedFile.isPresent()) {
            String mavenCentralJarUrl = getJarUrl(mavenCoordinate, jarBaseName, MAVEN_CENTRAL_URL);
            return tryFileDownload(mavenCentralJarUrl, targetDirectory, jarBaseName);
        }
        return downloadedFile;
    }

    public  HttpRequester(HttpClient httpClient, URL sourceRepositoryUrl);
    public  HttpRequester(HttpClient httpClient);

}