NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/downloader/DownloaderFactory.java

51 lines
1.7 KiB
Java

package org.schabi.newpipe.downloader;
import org.schabi.newpipe.extractor.downloader.Downloader;
import java.io.IOException;
public class DownloaderFactory {
public final static String RESOURCE_PATH = "src/test/resources/org/schabi/newpipe/extractor/";
private final static DownloaderType DEFAULT_DOWNLOADER = DownloaderType.REAL;
/**
* <p>
* Returns a implementation of a {@link Downloader}.
* </p>
* <p>
* If the system property "downloader" is set and is one of {@link DownloaderType},
* then a downloader of that type is returned.
* It can be passed in with gradle by adding the argument -Ddownloader=abcd,
* where abcd is one of {@link DownloaderType}
* </p>
* <p>
* Otherwise it falls back to {@link DownloaderFactory#DEFAULT_DOWNLOADER}.
* Change this during development on the local machine to use a different downloader.
* </p>
*
* @param path The path to the folder where mocks are saved/retrieved.
* Preferably starting with {@link DownloaderFactory#RESOURCE_PATH}
*/
public Downloader getDownloader(String path) throws IOException {
DownloaderType type;
try {
type = DownloaderType.valueOf(System.getProperty("downloader"));
} catch (Exception e) {
type = DEFAULT_DOWNLOADER;
}
switch (type) {
case REAL:
return DownloaderTestImpl.getInstance();
case MOCK:
return new MockDownloader(path);
case RECORDING:
return new RecordingDownloader(path);
default:
throw new UnsupportedOperationException("Unknown downloader type: " + type.toString());
}
}
}