mirror of
https://github.com/TeamNewPipe/NewPipeExtractor.git
synced 2025-04-29 08:20:34 +05:30
Add DownloaderFactory to return a specific downloader based on 2 variables.
If the system property 'downloader' is set that use that specific downloader. This is used from gradle by appending `-Ddownloader=ABCD to the command. ABCD is one of DownloaderType. The other variable is the static property `DEFAULT_DOWNLOADER` in DownloaderFactory, which can be easily changed as needed inside the IDE according to development needs`. Normal workflow would be to first use the recording downloader and afterwards only use mocks, if the requests are always staying the same.
This commit is contained in:
parent
7c40fb8bf7
commit
e6e8e39def
@ -0,0 +1,30 @@
|
|||||||
|
package org.schabi.newpipe.downloader;
|
||||||
|
|
||||||
|
import org.schabi.newpipe.extractor.downloader.Downloader;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class DownloaderFactory {
|
||||||
|
|
||||||
|
private final static DownloaderType DEFAULT_DOWNLOADER = DownloaderType.REAL;
|
||||||
|
|
||||||
|
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package org.schabi.newpipe.downloader;
|
||||||
|
|
||||||
|
public enum DownloaderType {
|
||||||
|
REAL, MOCK, RECORDING
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user