Commit fe984441 by Javier

Se añade Get User

parent 9e3f3feb
...@@ -5,7 +5,8 @@ from typing import Optional, Tuple ...@@ -5,7 +5,8 @@ from typing import Optional, Tuple
from pydantic import BaseModel from pydantic import BaseModel
import mbilling.functions import mbilling.functions
import mbilling.models as models
import mbilling.connector as mbc
description = """ description = """
Servicio API para la interacción con el Tarficador de Telefonía ☎️ Servicio API para la interacción con el Tarficador de Telefonía ☎️
...@@ -34,181 +35,11 @@ app = FastAPI( ...@@ -34,181 +35,11 @@ app = FastAPI(
) )
class Rate(str, Enum): @app.get('/account/{account_name}', response_model=models.User, name="Obtener Cuenta", description="Obtiene la información de una Cuenta de Facturación", tags=['Account'])
ESTANDAR = "Estandar"
EMPRESAS = "Empresas"
PLANA_1000 = "Plana1000"
PLANA_2000 = "Plana2000"
PLANA_EUROPA_1000 = "PlanaEuropa1000"
class Tax(str, Enum):
GENERAL = 'General'
EXENTA = 'Exento'
class Refill(str, Enum):
AUTOMATICA = 'Automatica'
LIQUIDACION = 'Liquidacion'
MANUAL = 'Manual'
TRASPASO = 'Traspaso'
INICIAL = 'Inicial'
class PeerDetails(BaseModel):
username: str = Body(
..., title='username', description='Nombre de Usuario'
)
secret: str = Body(
..., title='Secret', description='Contraseña'
)
fromuser: str = Body(
..., title='fromuser', description='Usuario SIP'
)
careinvite: bool = Body(
default=False, title='CareInvite', description='Comportamiento Invite, por defecto False.'
)
natforce: str = Body(
default='force_rport,comedia', title='NAT', description='Network Address Translation'
)
qualify: str = Body(
default='yes', title='Qualify', description='SIP Ping a Central'
)
type: str = Body(
default='friend', title='Type', description='Tipo de Conexión'
)
dtmfmode: str = Body(
default='RFC2833', title='DTMF', description='Tipo de Señalización'
)
insecure: str = Body(
default='port', title='Insecure', description='Permite autentificación relajada si coincide IP'
)
host: str = Body(
default='192.168.2.84', title='Host', description='Dirección del Tarificador'
)
disallow: str = Body(
default='all', title='Disallow', description='Codecs no Permitidos'
)
allow: str = Body(
default='gsm,opus,alaw,g729', title='Allow', description='Códecs Permitidos'
)
class UserDetails(BaseModel):
username: str = Body(
..., title='username', description='Nombre de Usuario'
)
secret: str = Body(
..., title='Secret', description='Contraseña'
)
fromuser: str = Body(
..., title='fromuser', description='Usuario SIP'
)
careinvite: bool = Body(
default=False, title='CareInvite', description='Comportamiento Invite, por defecto False.'
)
type: str = Body(
default='friend', title='Type', description='Tipo de Conexión'
)
dtmfmode: str = Body(
default='RFC2833', title='DTMF', description='Tipo de Señalización'
)
insecure: str = Body(
default='port', title='Insecure', description='Permite autentificación relajada si coincide IP'
)
host: str = Body(
default='192.168.2.84', title='Host', description='Dirección del Tarificador'
)
disallow: str = Body(
default='all', title='Disallow', description='Codecs no Permitidos'
)
allow: str = Body(
default='gsm,opus,alaw,g729', title='Allow', description='Códecs Permitidos'
)
class SipAccount(BaseModel):
trunk_name: str = Body(
..., title='Trunk', description='Nombre de la Troncal'
)
peer_details: PeerDetails = Body(
..., title='Peer Details', description='Credenciales llamadas Salientes'
)
user_context: str = Body(
default='from-trunk', title='Contexto', description='Contexto de Llamada'
)
user_details: UserDetails = Body(
..., title='User Details', description='Credenciales llamadas Entrantes'
)
class Account(BaseModel):
username: str = Body(
..., regex=r'[89][1-9]\d{7}', example='856135158', title='Número', description='Identificador de entrada y salidas de Llamadas'
)
name: str = Body(
..., example='Rentel', title='Nombre/Den. Comercial', description='Nombre del titular o Denominación Comercial de la empresa.', max_length=64
)
surname: str = Body(
..., example='Rentel Wifi SL', title='Apellidos/Den. Fiscal', description='Apellidos o Denominación Comercial de la empresa.', max_length=64
)
rate: Rate = Body(
default=Rate.ESTANDAR, title='Tarifa', description='Plan de Precios de la Línea'
)
balance: float = Body(
default=0.0, title='Saldo', description='Balance del Cliente'
)
sip_accounts : list[SipAccount] = Body(
..., title='Cuentas SIP', description='Números Asociados a la Cuenta de Facturación'
)
@app.get('/account/{account_name}', response_model=Account, name="Obtener Cuenta", description="Obtiene la información de una Cuenta de Facturación", tags=['Account'])
def get_account(account_name: str = Query(..., regex=r'[89][1-9]\d{7}', name='Número', description='Cuenta SIP a recargar')): def get_account(account_name: str = Query(..., regex=r'[89][1-9]\d{7}', name='Número', description='Cuenta SIP a recargar')):
user_data = mbilling.functions.get_user(account_name) user = mbc.get_user(account_name)
if not user:
if user_data: raise HTTPException(status_code=404, detail="No existe ningún usuario que contenga el número.")
print(user_data)
else: else:
response = JSONResponse( return user
content={
'result': 'ERROR',
'description': 'No existe ningún usuario con la identificación solicitada.'
}, status_code=404
)
return response
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment