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 }