Skip to content

Commit

Permalink
api done
Browse files Browse the repository at this point in the history
  • Loading branch information
rohittp0 committed Jun 5, 2023
1 parent f19eda5 commit 86d1583
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 2 deletions.
32 changes: 30 additions & 2 deletions gramup/main.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
import asyncio
import glob
import os
from typing import List, Literal

from fastapi import FastAPI, HTTPException
from fastapi import FastAPI, HTTPException, Request
from starlette import status
from starlette.middleware.cors import CORSMiddleware
from starlette.staticfiles import StaticFiles
from starlette.websockets import WebSocket
from telethon import TelegramClient

from constants import API_ID, API_HASH
from gramup.models import File, Task, TaskRequest

client = TelegramClient('anon', API_ID, API_HASH)
app = FastAPI()
Expand Down Expand Up @@ -48,11 +52,35 @@ async def websocket_endpoint(websocket: WebSocket):


@app.get("/api/files/")
async def files(path=""):
async def files(path="") -> List[File]:
if not client.is_connected() or not await client.is_user_authorized():
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="User not authorized")

return []


@app.get("/api/local_files/")
async def local_files(path="") -> List[File]:
return [
File(
folder=os.path.isdir(file),
name=os.path.basename(file),
path=file,
id=""
)
for file in glob.glob(f"{path}/*")
]


@app.post("/api/tasks/")
async def tasks(request: Request) -> Task:
body = TaskRequest(**(await request.json()))

return Task(
id="",
name="",
status="running",
)


app.mount("/", StaticFiles(directory="static"), name="static")
19 changes: 19 additions & 0 deletions gramup/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from typing import Literal, TypedDict

from pydantic import BaseModel


class File(BaseModel):
folder: bool
name: str
path: str
id: str


class Task(BaseModel):
id: str
name: str
status: Literal["running", "stopped", "finished"]


TaskRequest = TypedDict("TaskRequest", {"path": str, "type": Literal["sync", "upload"]})
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
fastapi==0.96.0
starlette~=0.27.0
Telethon~=1.28.5

pydantic~=1.10.8

0 comments on commit 86d1583

Please sign in to comment.