Implement api/v1/config/ip/get endpoint API
This commit is contained in:
@ -2,13 +2,34 @@ from fastapi import APIRouter, HTTPException
|
|||||||
from ..schema.response import DetailResponse
|
from ..schema.response import DetailResponse
|
||||||
|
|
||||||
|
|
||||||
from ..schema.config.ip import EditInputBody
|
from ..schema.config.ip import EditInputBody, StatusResponse
|
||||||
import cli_api
|
import cli_api
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
|
|
||||||
@router.get('/add')
|
@router.get('/get', response_model=StatusResponse, summary='Get IP Status')
|
||||||
|
async def get_ip_api():
|
||||||
|
"""
|
||||||
|
Retrieves the current status of IP addresses.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
StatusResponse: A response model containing the current IP address details.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
HTTPException: If the IP status is not available (404) or if there is an error processing the request (400).
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
|
||||||
|
ipv4, ipv6 = cli_api.get_ip_address()
|
||||||
|
if ipv4 or ipv6:
|
||||||
|
return StatusResponse(ipv4=ipv4, ipv6=ipv6) # type: ignore
|
||||||
|
raise HTTPException(status_code=404, detail='IP status not available.')
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(status_code=400, detail=f'Error: {str(e)}')
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/add', response_model=DetailResponse, summary='Add IP')
|
||||||
async def add_ip_api():
|
async def add_ip_api():
|
||||||
"""
|
"""
|
||||||
Adds the auto-detected IP addresses to the .configs.env file.
|
Adds the auto-detected IP addresses to the .configs.env file.
|
||||||
@ -26,7 +47,7 @@ async def add_ip_api():
|
|||||||
raise HTTPException(status_code=400, detail=f'Error: {str(e)}')
|
raise HTTPException(status_code=400, detail=f'Error: {str(e)}')
|
||||||
|
|
||||||
|
|
||||||
@router.post('/edit', response_model=DetailResponse)
|
@router.post('/edit', response_model=DetailResponse, summary='Edit IP')
|
||||||
async def edit_ip_api(body: EditInputBody):
|
async def edit_ip_api(body: EditInputBody):
|
||||||
"""
|
"""
|
||||||
Edits the IP addresses in the .configs.env file.
|
Edits the IP addresses in the .configs.env file.
|
||||||
|
|||||||
@ -2,6 +2,10 @@ from pydantic import BaseModel
|
|||||||
from ipaddress import IPv4Address, IPv6Address
|
from ipaddress import IPv4Address, IPv6Address
|
||||||
|
|
||||||
|
|
||||||
class EditInputBody(BaseModel):
|
class StatusResponse(BaseModel):
|
||||||
ipv4: IPv4Address | None = None
|
ipv4: IPv4Address | None = None
|
||||||
ipv6: IPv6Address | None = None
|
ipv6: IPv6Address | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class EditInputBody(StatusResponse):
|
||||||
|
pass
|
||||||
|
|||||||
Reference in New Issue
Block a user