|
from .Sanity import Sanity |
|
from fastapi import Request |
|
from telethon import TelegramClient |
|
from telethon.tl.types import Message |
|
from .Download import Download |
|
from fastapi.responses import JSONResponse |
|
|
|
|
|
class Handler: |
|
req: Request |
|
client: TelegramClient |
|
chat_id = -1001925049183 |
|
message: Message |
|
route: str |
|
head = False |
|
sanity: Sanity |
|
|
|
def __init__(self, id, req: Request, client, route=None, head=False): |
|
self.head = head |
|
self.req = req |
|
self.client = client |
|
self.sanity = Sanity() |
|
self.sanity.client = self.client |
|
self.sanity.chat_id = self.chat_id |
|
self.sanity.req = self.req |
|
self.sanity.file_id = id |
|
|
|
async def sanity_checks(self): |
|
self.message = await self.sanity.file_exists() |
|
|
|
try: |
|
if not self.message.media: |
|
return JSONResponse( |
|
status_code=404, |
|
content={"Error": "File Does not Exist"}, |
|
) |
|
except: |
|
return JSONResponse( |
|
status=404, |
|
content={"Error": "File Does not Exist", "route": self.route}, |
|
) |
|
|
|
if self.sanity.check_ranges() == False: |
|
return JSONResponse( |
|
status=416, |
|
content={"Error": "416: Range Not Satisfiable"}, |
|
headers={"Content-Range": f"bytes */{self.message.file.size}"}, |
|
) |
|
|
|
async def process_request(self): |
|
response = await self.sanity_checks() |
|
if type(response) is JSONResponse: |
|
return response |
|
|
|
|
|
return await Download(self).handle_request() |
|
|