Files
docker-py-revanced/src/downloader/factory.py
T
2023-08-25 15:56:57 +05:30

37 lines
1.3 KiB
Python

"""Downloader Factory."""
from src.config import RevancedConfig
from src.downloader.apkmirror import ApkMirror
from src.downloader.apkpure import ApkPure
from src.downloader.apksos import ApkSos
from src.downloader.download import Downloader
from src.downloader.github import Github
from src.downloader.sources import APK_MIRROR_BASE_URL, APK_PURE_BASE_URL, APKS_SOS_BASE_URL, GITHUB_BASE_URL
from src.downloader.uptodown import UptoDown
from src.exceptions import DownloadError
class DownloaderFactory(object):
"""Downloader Factory."""
@staticmethod
def create_downloader(config: RevancedConfig, apk_source: str) -> Downloader:
"""Returns appropriate downloader.
Args:
----
config : Config
apk_source : Source URL for APK
"""
if apk_source.startswith(GITHUB_BASE_URL):
return Github(config)
if apk_source.startswith(APK_PURE_BASE_URL):
return ApkPure(config)
if apk_source.startswith(APKS_SOS_BASE_URL):
return ApkSos(config)
if apk_source.endswith("en.uptodown.com/android"):
return UptoDown(config)
if apk_source.startswith(APK_MIRROR_BASE_URL):
return ApkMirror(config)
msg = "No download factory found."
raise DownloadError(msg)