#!/usr/bin/env python3 # -*- encoding: utf-8 -*- import sys from pathlib import Path import requests class AbstractReader: def __init__(self, path: str): self._path = path def read(self) -> str: raise NotImplementedError() class HttpReader(AbstractReader): def read(self) -> str: resp = requests.get(self._path) resp.raise_for_status() return resp.text class KnownReader(AbstractReader): def read(self) -> str: return self._path class StdioReader(AbstractReader): def read(self) -> str: return sys.stdin.read() class FileReader(AbstractReader): def read(self) -> str: return Path(self._path).read_text(encoding='utf-8', errors='strict')