blob: 633dc0b9872b585944727d1a5d644f4852801ff9 (
plain) (
tree)
|
|
from .lists import ListFile, ListFileEntry, ListFileIterator
from dataclasses import dataclass
from typing import cast
import requests
@dataclass(frozen=True)
class ButtonListFileEntry(ListFileEntry):
root: str
def url(self) -> str:
return self.root + "/" + self.entry
def exists(self) -> bool:
return requests.head(self.url()).ok
class ButtonListFileIterator(ListFileIterator):
def __next__(self) -> ButtonListFileEntry:
return cast(ButtonListFileEntry, super().__next__())
@dataclass(frozen=True)
class ButtonListFile(ListFile):
def __init__(self, contents: str, root: str):
super().__init__(contents)
self.root = root
@classmethod
def from_url(cls, url: str):
(root, _, _) = url.rpartition('/')
return cls(requests.get(url, stream = False).text, root)
|