added languages route
This commit is contained in:
parent
4f152233ca
commit
fb5c53a6b7
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,4 +1,5 @@
|
|||||||
.idea/
|
.idea/
|
||||||
|
.vscode/
|
||||||
.idea/**/workspace.xml
|
.idea/**/workspace.xml
|
||||||
.idea/**/tasks.xml
|
.idea/**/tasks.xml
|
||||||
.idea/**/usage.statistics.xml
|
.idea/**/usage.statistics.xml
|
||||||
|
4
.vscode/settings.json
vendored
Normal file
4
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"python.analysis.typeCheckingMode": "basic",
|
||||||
|
"python.analysis.autoImportCompletions": true
|
||||||
|
}
|
2
data
2
data
@ -1 +1 @@
|
|||||||
Subproject commit df34257e5adc98acfa514eb6a91aae7dc4be4733
|
Subproject commit 50e2b26da886b97536db8c511394145e06b2c597
|
@ -1,7 +1,7 @@
|
|||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
from subprocess import check_output
|
from subprocess import check_output
|
||||||
|
|
||||||
from src.constants import GAME_VERSION, SERVER_VERSION
|
from src.constants import GAME_VERSION, SERVER_VERSION, LANGUAGES
|
||||||
from src.errors import Response
|
from src.errors import Response
|
||||||
|
|
||||||
|
|
||||||
@ -10,28 +10,33 @@ api = APIRouter(prefix='/api', tags=['Service'])
|
|||||||
|
|
||||||
@api.get('/version')
|
@api.get('/version')
|
||||||
async def get_versions():
|
async def get_versions():
|
||||||
commit_hash = git_revision_hash()
|
git_server = git_info('.')
|
||||||
git_server = {
|
git_data = git_info('./data')
|
||||||
'commit': git_revision_short_hash(),
|
|
||||||
'commit_hash': commit_hash,
|
|
||||||
'branch': git_branch(),
|
|
||||||
'release': git_text(commit_hash)
|
|
||||||
}
|
|
||||||
|
|
||||||
data_hash = git_revision_hash('./data')
|
|
||||||
git_data = {
|
|
||||||
'commit': git_revision_short_hash('./data'),
|
|
||||||
'commit_hash': data_hash,
|
|
||||||
'branch': git_branch('./data'),
|
|
||||||
'release': git_text(data_hash, './data')
|
|
||||||
}
|
|
||||||
reponse = {'server_version': SERVER_VERSION,
|
reponse = {'server_version': SERVER_VERSION,
|
||||||
'game_version': GAME_VERSION,
|
'game_version': GAME_VERSION,
|
||||||
'git_server': git_server,
|
'git_server': git_server,
|
||||||
'git_data': git_data}
|
'git_data': git_data}
|
||||||
|
|
||||||
return Response(response=reponse)
|
return Response(response=reponse)
|
||||||
|
|
||||||
|
|
||||||
|
@api.get('/languages')
|
||||||
|
async def get_languages():
|
||||||
|
return Response(response=LANGUAGES)
|
||||||
|
|
||||||
|
|
||||||
|
def git_info(path: str):
|
||||||
|
data_hash = git_revision_hash(path)
|
||||||
|
git = {
|
||||||
|
'commit': git_revision_short_hash(path),
|
||||||
|
'commit_hash': data_hash,
|
||||||
|
'branch': git_branch(path),
|
||||||
|
'release': git_text(data_hash, path)
|
||||||
|
}
|
||||||
|
return git
|
||||||
|
|
||||||
|
|
||||||
def git_revision_short_hash(cwd=None) -> str:
|
def git_revision_short_hash(cwd=None) -> str:
|
||||||
return check_out(['git', 'rev-parse', '--short', 'HEAD'], cwd)
|
return check_out(['git', 'rev-parse', '--short', 'HEAD'], cwd)
|
||||||
|
|
||||||
|
@ -10,15 +10,17 @@ geographies = APIRouter(prefix='/geographies', tags=['Geographies'])
|
|||||||
@geographies.get('/')
|
@geographies.get('/')
|
||||||
async def get_geographies(query_field: str = 'names', query_languages: str = 'eng') -> Response:
|
async def get_geographies(query_field: str = 'names', query_languages: str = 'eng') -> Response:
|
||||||
query_langs = parse_query_langs(query_languages)
|
query_langs = parse_query_langs(query_languages)
|
||||||
response: list[dict[str, list[str]]] = []
|
response: list = []
|
||||||
for query_lang in query_langs:
|
for query_lang in query_langs:
|
||||||
chars = load_index(query_lang, 'geographies')
|
chars = load_index(query_lang, 'geographies')
|
||||||
response.append({query_lang: list(chars[query_field].keys())})
|
response.append({query_lang: list(chars[query_field].keys())})
|
||||||
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
return Response(error=False, response=response)
|
||||||
|
|
||||||
|
|
||||||
@geographies.get('/{query}', response_model_exclude_none=True)
|
@geographies.get('/{query}', response_model_exclude_none=True)
|
||||||
async def get_geography(query: str, query_languages: str = 'eng', result_language: str = 'ru') -> Response[Geography]:
|
async def get_geography(
|
||||||
|
query: str, query_languages: str = 'eng', result_language: str = 'ru'
|
||||||
|
) -> Response[Geography]:
|
||||||
query_langs = parse_query_langs(query_languages)
|
query_langs = parse_query_langs(query_languages)
|
||||||
result_lang = parse_result_lang(result_language)
|
result_lang = parse_result_lang(result_language)
|
||||||
filename = get_file_name(query, 'geographies', query_langs)
|
filename = get_file_name(query, 'geographies', query_langs)
|
||||||
|
@ -24,6 +24,7 @@ def load_file(folder: str, name: str) -> dict:
|
|||||||
def get_file_name(query, category, langs) -> str:
|
def get_file_name(query, category, langs) -> str:
|
||||||
for lang in langs:
|
for lang in langs:
|
||||||
index: dict[str, str] = load_index(lang, category)['names']
|
index: dict[str, str] = load_index(lang, category)['names']
|
||||||
|
|
||||||
for key, value in index.items():
|
for key, value in index.items():
|
||||||
for k in key.lower().split(' '):
|
for k in key.lower().split(' '):
|
||||||
if k.startswith(query.lower()):
|
if k.startswith(query.lower()):
|
||||||
|
Loading…
Reference in New Issue
Block a user