-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.py
142 lines (121 loc) · 3.61 KB
/
main.py
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
from fastapi import FastAPI, HTTPException
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from router.otros import router as otros
from router.calculo_basico import router as calculo_basico
from router.trigonometria import router as trigonometria
from router.calculadora import router as calculadora
from router.conversion import router as conversion
from router.paginas import router as paginas
from router.estadisticas import router as estadisticas
# Run with uvicorn main:app --reload
description = """
## ⚓ Listado de Funcionalidades
### 🤓 Cálculo Básico
- Sumar
- Restar
- Multiplicar
- Dividir
- Módulo
- Raíz n-ésima
- Potenciación
- Logaritmo
### 🤖 Conversión
- Ángulo
- Área
- Datos
- Longitud
- Masa
- Velocidad
- Sistema Numérico (BIN, DEC, HEX, OCT)
- Temperatura
- Tiempo
- Volumen
- Divisas (+160 divisas en tiempo real la tasa de cambio)
### 💥 Trigonometría
- Seno
- Coseno
- Tangente
- Cotangente
- Secante
- Cosecante
### 🎓 Calculadora
- Evaluación y Cálculo de expresiones
- Descuento
- IMC
### 📈 Estadística
- Media
- Mediana
- Multi-Moda
- Desviación Estándar de la población
- Desviación Estándar de la muestra
- Varianza de la población
- Varianza de la muestra
- Correlación
- Covarianza
### 🎈 Otros
- Constantes
"""
app = FastAPI(title="Api Calculadora Simple",
description=description,
summary="Api de Calculadora simple desarrollada con FastApi 🚀",
version="1.0.2",
contact={
"name": "Eduardo González",
"url": "https://github.com/EduardoProfe666",
"email": "eduardoglez64377@gmail.com",
},
license_info={
"name": "MIT License",
"url": "https://opensource.org/license/mit/"
})
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
app.include_router(calculo_basico)
app.include_router(calculadora)
app.include_router(trigonometria)
app.include_router(conversion)
app.include_router(estadisticas)
app.include_router(otros)
app.include_router(paginas)
@app.exception_handler(404)
async def http_exception_404(request, exc):
return templates.TemplateResponse("error.html", {
"request": request,
"first_digit": "4",
"second_digit": "0",
"third_digit": "4",
"codigo": "404",
"mensaje": "Página/Servicio no encontrado"
}, status_code=404)
@app.exception_handler(422)
async def http_exceptio_422(request, exc):
return templates.TemplateResponse("error.html", {
"request": request,
"first_digit": "4",
"second_digit": "2",
"third_digit": "2",
"codigo": "422",
"mensaje": "Error de validación. Revise la validez de los datos proporcionados."
}, status_code=422)
@app.exception_handler(500)
async def http_exceptio_500(request, exc):
return templates.TemplateResponse("error.html", {
"request": request,
"first_digit": "5",
"second_digit": "0",
"third_digit": "0",
"codigo": "500",
"mensaje": 'Error Interno. Intente más tarde.'
}, status_code=500)
@app.exception_handler(HTTPException)
async def http_exception_handler(request, exc):
codigo = str(exc.status_code)
return templates.TemplateResponse("error.html", {
"request": request,
"first_digit": codigo[0],
"second_digit": codigo[1],
"third_digit": codigo[2],
"codigo": codigo,
"mensaje": exc.detail
}, status_code=exc.status_code)