Source code for anteiapi.models.file

from datetime import datetime
import requests
from filetype import guess_mime, guess_extension
from ..exception import FileNotFound
from io import BytesIO
[docs]class FileContent: """ :param binary: bytes """ def __init__(self, binary: bytes) -> None: self.binary = binary self.mime: str = guess_mime(self.binary) or 'text/txt' self.extension: str = guess_extension(self.binary) or 'txt'
[docs] def save(self, filename=False): """ save file :param filename: str """ if isinstance(filename, str): open(filename, 'wb').write(self.binary) else: return BytesIO(self.binary)
[docs]class DownloadUrl: """ :param url: str """ def __init__(self, url) -> None: self.url = url self.req = requests.get(url, stream=True) if not self.req.status_code == 200: raise FileNotFound('') self.size = self.req.headers.get('Length-Content','Unknown') self.mime = self.req.headers.get('Content-Type','/') self.ext = self.mime.split('/')[1] #expiration is not available
[docs] def download(self)->BytesIO: """ Download File from url """ return BytesIO(requests.get(self.url).content)
def __repr__(self) -> str: return """ { url: "%s", size: %s, mime: %s, ext: %s download: %s }"""%(self.url, self.size, self.mime, self.download) def __str__(self) -> str: return self.__repr__()
[docs]class File: """ :param jsun: dict """ def __init__(self, jsun:dict) -> None: self.filename:str = jsun['filename'] self.mime:str = jsun['mime'] self.ext:str = jsun['ext'] self.expiration:datetime = datetime.fromtimestamp(jsun['expired']) self.filesize:int = jsun['filesize'] self.filesize_s:str = jsun['filesize_s'] self.url:str = jsun['url']
[docs] def download(self) -> BytesIO: """ Download File from url """ return BytesIO(requests.get(self.url).content)
def __repr__(self) -> str: return f'<({self.filename})>'