module Granblue module Downloaders class BaseDownloader SIZES: Array[String] # Define allowed storage types type storage = :local | :s3 | :both @id: String @base_url: String @test_mode: bool @verbose: bool @storage: storage @aws_service: AwsService def initialize: (String id, ?test_mode: bool, ?verbose: bool, ?storage: storage) -> void def download: -> void private def process_download: (String url, String size, String path, ?last: bool) -> void def download_to_local: (String url, String download_uri) -> void def stream_to_s3: (String url, String s3_key) -> void def download_to_both: (String url, String download_uri, String s3_key) -> void def should_download?: (String local_path, String s3_key) -> bool def ensure_directories_exist: -> void def store_locally?: -> bool def download_path: (String size) -> String def build_s3_key: (String size, String filename) -> String def log_info: (String message) -> void def download_elemental_image: (String url, String size, String path, String filename) -> void def object_type: -> String def base_url: -> String def directory_for_size: (String size) -> String def build_url: (String size) -> String end end end