2 Commits
Author SHA1 Message Date
austnv cdcbf0b622 add in-memory cache to /api/v1/api endpoint 2026-06-14 22:45:59 +03:00
austnv e0c85f3523 add /api/v1/tariffs endpoint 2026-06-14 22:43:37 +03:00
4 changed files with 24 additions and 0 deletions
+1
View File
@@ -5,6 +5,7 @@ description = "Add your description here"
readme = "README.md" readme = "README.md"
requires-python = ">=3.12" requires-python = ">=3.12"
dependencies = [ dependencies = [
"aiofiles>=25.1.0",
"bs4>=0.0.2", "bs4>=0.0.2",
"fastapi>=0.136.3", "fastapi>=0.136.3",
"httpx>=0.28.1", "httpx>=0.28.1",
+3
View File
@@ -3,6 +3,7 @@ from typing import Optional, Dict, Any, Tuple
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from fastapi import APIRouter, Request from fastapi import APIRouter, Request
from functools import lru_cache
from httpx import AsyncClient from httpx import AsyncClient
@@ -166,6 +167,8 @@ class IPInfo:
# ==================== Роутер ==================== # ==================== Роутер ====================
router = APIRouter(prefix='/api/v1', tags=['ip']) router = APIRouter(prefix='/api/v1', tags=['ip'])
@lru_cache
@router.get('/ip') @router.get('/ip')
async def get_ip(request: Request): async def get_ip(request: Request):
forwarded = request.headers.get('X-Forwarded-For') forwarded = request.headers.get('X-Forwarded-For')
+9
View File
@@ -0,0 +1,9 @@
from fastapi import APIRouter, Request
import aiofiles
router = APIRouter(prefix='/api/v1', tags=['tariffs'])
@router.get('/tariffs')
async def get_tariffs(request: Request):
async with aiofiles.open('/opt/remnawave-minishop/data/tariffs.json', 'r', encoding='utf-8') as file:
return await file.read()
Generated
+11
View File
@@ -7,6 +7,15 @@ resolution-markers = [
"python_full_version < '3.13'", "python_full_version < '3.13'",
] ]
[[package]]
name = "aiofiles"
version = "25.1.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/41/c3/534eac40372d8ee36ef40df62ec129bee4fdb5ad9706e58a29be53b2c970/aiofiles-25.1.0.tar.gz", hash = "sha256:a8d728f0a29de45dc521f18f07297428d56992a742f0cd2701ba86e44d23d5b2", size = 46354, upload-time = "2025-10-09T20:51:04.358Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl", hash = "sha256:abe311e527c862958650f9438e859c1fa7568a141b22abcd015e120e86a85695", size = 14668, upload-time = "2025-10-09T20:51:03.174Z" },
]
[[package]] [[package]]
name = "annotated-doc" name = "annotated-doc"
version = "0.0.4" version = "0.0.4"
@@ -883,6 +892,7 @@ name = "uvpn-backend"
version = "0.1.0" version = "0.1.0"
source = { virtual = "." } source = { virtual = "." }
dependencies = [ dependencies = [
{ name = "aiofiles" },
{ name = "bs4" }, { name = "bs4" },
{ name = "fastapi" }, { name = "fastapi" },
{ name = "httpx" }, { name = "httpx" },
@@ -896,6 +906,7 @@ dev = [
[package.metadata] [package.metadata]
requires-dist = [ requires-dist = [
{ name = "aiofiles", specifier = ">=25.1.0" },
{ name = "bs4", specifier = ">=0.0.2" }, { name = "bs4", specifier = ">=0.0.2" },
{ name = "fastapi", specifier = ">=0.136.3" }, { name = "fastapi", specifier = ">=0.136.3" },
{ name = "httpx", specifier = ">=0.28.1" }, { name = "httpx", specifier = ">=0.28.1" },