File size: 1,460 Bytes
e7f8ff5 8325569 261a211 8325569 e7f8ff5 8325569 261a211 8325569 261a211 e7f8ff5 8325569 e7f8ff5 8325569 261a211 8325569 261a211 e7f8ff5 261a211 e7f8ff5 261a211 e7f8ff5 261a211 |
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 |
import json
from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates
from utils import get_socials, get_logger, availability_response
app = FastAPI()
templates = Jinja2Templates(directory="templates")
socials = get_socials()
@app.get('/')
def index(request: Request):
try:
json_data = json.dumps([
{ "id": i.get('id'), "name": i.get('name'), "img": i.get('img'), }
for i
in socials
])
return templates.TemplateResponse("index.html", {
"request": request,
"json_data": json_data
})
except Exception as e:
return str(e)
@app.get('/check/{platform}/{username}')
async def check_social_media_handle(platform: str, username: str):
social = next(i for i in socials if i.get('id') == platform)
if social is None:
return {
"message": f'❌ The platform "{platform}" is not supported'
}
return await _resolve(platform, username, **social)
async def _resolve(platform: str, username: str, *, validate, resolve, message = None, **_):
if not validate(username):
raise Exception(f'"{username}" is not a valid {platform} username')
logs, logger = get_logger()
response = await availability_response(
resolve = resolve(username, logger),
logger = logger,
message = message(username) if message else None)
return { **response, "logs": logs } |