File size: 1,861 Bytes
12e4bed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113fcd6
5d97eb1
12e4bed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

import os
import json
import logging
import asyncio
import traceback
import aiohttp_cors
from aiohttp import web
from pyrogram import raw
from bson import ObjectId
from bson.json_util import dumps
from aiohttp.http_exceptions import BadStatusLine

#---------------------Local Imports----------------------------------#
from FileStream.bot import req_client
from ..Functions import media_streamer
from FileStream.Database import Database
from FileStream.config import Telegram, Server
from FileStream.Exceptions import FileNotFound, InvalidHash
from FileStream.APIs.TMDB.Endpoint import search_tmdb_any, search_tmdb_tv, search_tmdb_movies

# Upload endpoint with optimization (not reading entire file into memory)
async def upload_file(request: web.Request):
    data = await request.post()
    file = data.get('file').file
    chunk = file.read()  # Read the file in chunks to avoid memory overload
    file_details = dict(
        user_id="thebinary1",
        dropzone_id=str(data["dzuuid"]),
        file=dict(
            file_id=str(data["dzuuid"]),
            file_unique_id=str(data["dzuuid"]),
            file_name=str(data.get('file').filename),
            file_size=int(data["dztotalfilesize"]),
            mime_type=mime_identifier(str(data.get('file').filename)),
            part_size=int(data["dzchunksize"]),
            file_part=int(data["dzchunkindex"]),
            total_parts=int(data["dztotalchunkcount"])
        ),
        time=Time_ISTKolNow(),
        user_type="WEB",
        privacy_type="PRIVATE"
    )
    
    client_req = await req_client()  # Ensure client request is fast and optimized
    tg_connect = TeleUploader(client_req["client"])
    main = await tg_connect.upload_web_file(file_details, chunk)
    
    return web.json_response({
        "status": main.get("status"),
        "message": main.get("message")
    })