Files
docker-py-revanced/src/downloader/factory.py
T
2024-04-11 23:17:47 +05:30

52 lines
1.7 KiB
Python

"""Downloader Factory."""
from src.config import RevancedConfig
from src.downloader.apkmirror import ApkMirror
from src.downloader.apkmonk import ApkMonk
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.google_drive import GoogleDrive
from src.downloader.sources import (
APK_MIRROR_BASE_URL,
APK_MONK_BASE_URL,
APK_PURE_BASE_URL,
APKS_SOS_BASE_URL,
DRIVE_DOWNLOAD_BASE_URL,
GITHUB_BASE_URL,
UPTODOWN_SUFFIX,
)
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(UPTODOWN_SUFFIX):
return UptoDown(config)
if apk_source.startswith(APK_MIRROR_BASE_URL):
return ApkMirror(config)
if apk_source.startswith(APK_MONK_BASE_URL):
return ApkMonk(config)
if apk_source.startswith(DRIVE_DOWNLOAD_BASE_URL):
return GoogleDrive(config)
msg = "No download factory found."
raise DownloadError(msg, url=apk_source)