Last commit not found
from fastapi import APIRouter, HTTPException, status | |
from typing import List, Optional | |
from fastapi import FastAPI, HTTPException, Depends, Body, Path | |
from fastapi.responses import JSONResponse | |
from .utils.helperfx import get_mikrotik, MikrotikAPI | |
from .schema import ( | |
UserCreate, | |
RegisterResponse, | |
LogoutResponse, | |
UserStatsResponse, | |
ActiveUsersResponse, | |
UserStatusResponse, | |
) | |
mikrotik_router = APIRouter(tags=["Mikrotik"]) | |
# New route to remove a user's active session | |
async def remove_active_session( | |
phone: str = Path(..., description="User phone number"), | |
mikrotik: MikrotikAPI = Depends(get_mikrotik), | |
): | |
"""Remove an active session for a hotspot user""" | |
response = mikrotik.remove_active_session(phone) | |
if not response["success"]: | |
return JSONResponse( | |
status_code=400, | |
content=response, | |
) | |
return JSONResponse(content={"message": f"User {phone} session removed"}) | |
async def register_user( | |
user: UserCreate = Body(...), mikrotik: MikrotikAPI = Depends(get_mikrotik) | |
): | |
"""Register a new hotspot user""" | |
response = mikrotik.add_hotspot_user( | |
phone=user.phoneNumber, password=user.password, profile=user.profile | |
) | |
print(response) | |
if not response.code == 200: | |
return JSONResponse( | |
status_code=400, | |
content=response.__dict__, | |
) | |
return response.__dict__ | |
async def logout_user( | |
phone: str = Path(..., description="User phone number"), | |
mikrotik: MikrotikAPI = Depends(get_mikrotik), | |
): | |
"""Logout a hotspot user""" | |
response = mikrotik.logout_hotspot_user(phone) | |
if not response.code == 200: | |
return JSONResponse( | |
status_code=400, | |
content=response.__dict__, | |
) | |
return response.__dict__ | |
async def disable_user( | |
phone: str = Path(..., description="User phone number"), | |
mikrotik: MikrotikAPI = Depends(get_mikrotik), | |
): | |
"""Disable a hotspot user""" | |
response = mikrotik.set_user_status(phone, disabled=True) | |
print(response) | |
if not response.code == 200: | |
return JSONResponse( | |
status_code=400, | |
content=response, | |
) | |
return response.__dict__ | |
async def enable_user( | |
phone: str = Path(..., description="User phone number"), | |
mikrotik: MikrotikAPI = Depends(get_mikrotik), | |
): | |
"""Enable a hotspot user""" | |
response = mikrotik.set_user_status(phone, disabled=False) | |
if not response.code == 200: | |
return JSONResponse( | |
status_code=400, | |
content=response.__dict__, | |
) | |
return response.__dict__ | |
async def get_active_users(mikrotik: MikrotikAPI = Depends(get_mikrotik)): | |
"""Get list of active hotspot users""" | |
response = mikrotik.get_active_users() | |
print(response) | |
if not response.code == 200: | |
return JSONResponse( | |
status_code=400, | |
content=response.__dict__, | |
) | |
return response | |
async def get_users_stats( | |
phone: Optional[str] = None, mikrotik: MikrotikAPI = Depends(get_mikrotik) | |
): | |
"""Get user statistics""" | |
response = mikrotik.get_user_stats(phone) | |
if not response.code == 200: | |
return JSONResponse( | |
status_code=400, | |
content=response.__dict__, | |
) | |
return response.__dict__ | |
async def get_users_list(mikrotik: MikrotikAPI = Depends(get_mikrotik)): | |
"""Get list of all hotspot users""" | |
response = mikrotik.get_users_list() | |
if not response.code == 200: | |
return JSONResponse( | |
status_code=400, | |
content=response.__dict__, | |
) | |
return response | |