aboutsummaryrefslogblamecommitdiffstats
path: root/src/bbss/buttons.py
blob: 63de4d1561f523883be1089991841583cf808134 (plain) (tree)



























                                                            
from .lists import ListFile, ListFileEntry, ListFileIterator
from dataclasses import dataclass
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 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)