203 lines
9.5 KiB
Python
203 lines
9.5 KiB
Python
from fastapi import APIRouter
|
|
|
|
from src.errors import Response
|
|
from src.types.tcg import ActionCard, CardBack, CardBox, CharacterCard, DetailedRule, EnemyCard, Keyword, LevelReward, \
|
|
StatusEffect, Summon
|
|
from src.utils import get_file_name, parse_result_lang, parse_query_langs, load_category, load_index
|
|
|
|
tcg = APIRouter(prefix='/tcg', tags=['TCG'])
|
|
|
|
|
|
@tcg.get('/action_cards')
|
|
async def get_action_cards(query_field: str = 'names', result_language: str = 'eng') -> Response:
|
|
query_langs = parse_query_langs(result_language)
|
|
response: list[dict[str, list[str]]] = []
|
|
for query_lang in query_langs:
|
|
chars = load_index(query_lang, 'tcgactioncards')
|
|
response.append({query_lang: list(chars[query_field].keys())})
|
|
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
|
|
|
|
|
@tcg.get('/action_cards/{query}', response_model_exclude_none=True)
|
|
async def get_action_card(query: str, query_languages: str = 'eng', result_language: str = 'ru') -> Response[ActionCard]:
|
|
query_langs = parse_query_langs(query_languages)
|
|
result_lang = parse_result_lang(result_language)
|
|
filename = get_file_name(query, 'tcgactioncards', query_langs)
|
|
return Response[ActionCard](response=load_category(result_lang, 'tcgactioncards', filename))
|
|
|
|
|
|
@tcg.get('/card_backs')
|
|
async def get_card_backs(query_field: str = 'names', result_language: str = 'eng') -> Response:
|
|
query_langs = parse_query_langs(result_language)
|
|
response: list[dict[str, list[str]]] = []
|
|
for query_lang in query_langs:
|
|
chars = load_index(query_lang, 'tcgcardbacks')
|
|
response.append({query_lang: list(chars[query_field].keys())})
|
|
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
|
|
|
|
|
@tcg.get('/card_back/{query}', response_model_exclude_none=True)
|
|
async def get_card_back(query: str, query_languages: str = 'eng', result_language: str = 'ru') -> Response[CardBack]:
|
|
query_langs = parse_query_langs(query_languages)
|
|
result_lang = parse_result_lang(result_language)
|
|
filename = get_file_name(query, 'tcgcardbacks', query_langs)
|
|
return Response[CardBack](response=load_category(result_lang, 'tcgcardbacks', filename))
|
|
|
|
|
|
@tcg.get('/card_boxes')
|
|
async def get_card_boxes(query_field: str = 'names', result_language: str = 'eng') -> Response:
|
|
query_langs = parse_query_langs(result_language)
|
|
response: list[dict[str, list[str]]] = []
|
|
for query_lang in query_langs:
|
|
chars = load_index(query_lang, 'tcgcardboxes')
|
|
response.append({query_lang: list(chars[query_field].keys())})
|
|
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
|
|
|
|
|
@tcg.get('/card_boxes/{query}', response_model_exclude_none=True)
|
|
async def get_card_box(query: str, query_languages: str = 'eng', result_language: str = 'ru') -> Response[CardBox]:
|
|
query_langs = parse_query_langs(query_languages)
|
|
result_lang = parse_result_lang(result_language)
|
|
filename = get_file_name(query, 'tcgcardboxes', query_langs)
|
|
return Response[CardBox](response=load_category(result_lang, 'tcgcardboxes', filename))
|
|
|
|
|
|
@tcg.get('/character_cards')
|
|
async def get_character_cards(query_field: str = 'names', result_language: str = 'eng') -> Response:
|
|
query_langs = parse_query_langs(result_language)
|
|
response: list[dict[str, list[str]]] = []
|
|
for query_lang in query_langs:
|
|
chars = load_index(query_lang, 'tcgcharactercards')
|
|
response.append({query_lang: list(chars[query_field].keys())})
|
|
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
|
|
|
|
|
@tcg.get('/character_cards/{query}', response_model_exclude_none=True)
|
|
async def get_character_card(
|
|
query: str, query_languages: str = 'eng', result_language: str = 'ru'
|
|
) -> Response[CharacterCard]:
|
|
query_langs = parse_query_langs(query_languages)
|
|
result_lang = parse_result_lang(result_language)
|
|
filename = get_file_name(query, 'tcgcharactercards', query_langs)
|
|
return Response[CharacterCard](response=load_category(result_lang, 'tcgcharactercards', filename))
|
|
|
|
|
|
@tcg.get('/enemy_cards')
|
|
async def get_enemy_cards(query_field: str = 'names', result_language: str = 'eng') -> Response:
|
|
query_langs = parse_query_langs(result_language)
|
|
response: list[dict[str, list[str]]] = []
|
|
for query_lang in query_langs:
|
|
chars = load_index(query_lang, 'tcgenemycards')
|
|
response.append({query_lang: list(chars[query_field].keys())})
|
|
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
|
|
|
|
|
@tcg.get('/enemy_cards/{query}', response_model_exclude_none=True)
|
|
async def get_enemy_card(
|
|
query: str, query_languages: str = 'eng', result_language: str = 'ru'
|
|
) -> Response[EnemyCard]:
|
|
query_langs = parse_query_langs(query_languages)
|
|
result_lang = parse_result_lang(result_language)
|
|
filename = get_file_name(query, 'tcgenemycards', query_langs)
|
|
return Response[EnemyCard](response=load_category(result_lang, 'tcgenemycards', filename))
|
|
|
|
|
|
@tcg.get('/detailed_rules')
|
|
async def get_detailed_rules(query_field: str = 'names', result_language: str = 'eng') -> Response:
|
|
query_langs = parse_query_langs(result_language)
|
|
response: list[dict[str, list[str]]] = []
|
|
for query_lang in query_langs:
|
|
chars = load_index(query_lang, 'tcgdetailedrules')
|
|
response.append({query_lang: list(chars[query_field].keys())})
|
|
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
|
|
|
|
|
@tcg.get('/detailed_rules/{query}', response_model_exclude_none=True)
|
|
async def get_detailed_rule(
|
|
query: str, query_languages: str = 'eng', result_language: str = 'ru'
|
|
) -> Response[DetailedRule]:
|
|
query_langs = parse_query_langs(query_languages)
|
|
result_lang = parse_result_lang(result_language)
|
|
filename = get_file_name(query, 'tcgdetailedrules', query_langs)
|
|
return Response[DetailedRule](response=load_category(result_lang, 'tcgdetailedrules', filename))
|
|
|
|
|
|
@tcg.get('/keywords')
|
|
async def get_keywords(query_field: str = 'names', result_language: str = 'eng') -> Response:
|
|
query_langs = parse_query_langs(result_language)
|
|
response: list[dict[str, list[str]]] = []
|
|
for query_lang in query_langs:
|
|
chars = load_index(query_lang, 'tcgkeywords')
|
|
response.append({query_lang: list(chars[query_field].keys())})
|
|
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
|
|
|
|
|
@tcg.get('/keywords/{query}', response_model_exclude_none=True)
|
|
async def get_keyword(
|
|
query: str, query_languages: str = 'eng', result_language: str = 'ru'
|
|
) -> Response[Keyword]:
|
|
query_langs = parse_query_langs(query_languages)
|
|
result_lang = parse_result_lang(result_language)
|
|
filename = get_file_name(query, 'tcgkeywords', query_langs)
|
|
return Response[Keyword](response=load_category(result_lang, 'tcgkeywords', filename))
|
|
|
|
|
|
@tcg.get('/level_rewards')
|
|
async def get_level_rewards(query_field: str = 'names', result_language: str = 'eng') -> Response:
|
|
query_langs = parse_query_langs(result_language)
|
|
response: list[dict[str, list[str]]] = []
|
|
for query_lang in query_langs:
|
|
chars = load_index(query_lang, 'tcglevelrewards')
|
|
response.append({query_lang: list(chars[query_field].keys())})
|
|
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
|
|
|
|
|
@tcg.get('/level_rewards/{query}', response_model_exclude_none=True)
|
|
async def get_level_reward(
|
|
query: str, query_languages: str = 'eng', result_language: str = 'ru'
|
|
) -> Response[LevelReward]:
|
|
query_langs = parse_query_langs(query_languages)
|
|
result_lang = parse_result_lang(result_language)
|
|
filename = get_file_name(query, 'tcglevelrewards', query_langs)
|
|
return Response[LevelReward](response=load_category(result_lang, 'tcglevelrewards', filename))
|
|
|
|
|
|
@tcg.get('/status_effects')
|
|
async def get_status_effects(query_field: str = 'names', result_language: str = 'eng') -> Response:
|
|
query_langs = parse_query_langs(result_language)
|
|
response: list[dict[str, list[str]]] = []
|
|
for query_lang in query_langs:
|
|
chars = load_index(query_lang, 'tcgstatuseffects')
|
|
response.append({query_lang: list(chars[query_field].keys())})
|
|
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
|
|
|
|
|
@tcg.get('/status_effects/{query}', response_model_exclude_none=True)
|
|
async def get_status_effect(
|
|
query: str, query_languages: str = 'eng', result_language: str = 'ru'
|
|
) -> Response[StatusEffect]:
|
|
query_langs = parse_query_langs(query_languages)
|
|
result_lang = parse_result_lang(result_language)
|
|
filename = get_file_name(query, 'tcgstatuseffects', query_langs)
|
|
return Response[StatusEffect](response=load_category(result_lang, 'tcgstatuseffects', filename))
|
|
|
|
|
|
@tcg.get('/summons')
|
|
async def get_summons(query_field: str = 'names', result_language: str = 'eng') -> Response:
|
|
query_langs = parse_query_langs(result_language)
|
|
response: list[dict[str, list[str]]] = []
|
|
for query_lang in query_langs:
|
|
chars = load_index(query_lang, 'tcgsummons')
|
|
response.append({query_lang: list(chars[query_field].keys())})
|
|
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
|
|
|
|
|
@tcg.get('/summons/{query}', response_model_exclude_none=True)
|
|
async def get_summon(
|
|
query: str, query_languages: str = 'eng', result_language: str = 'ru'
|
|
) -> Response[Summon]:
|
|
query_langs = parse_query_langs(query_languages)
|
|
result_lang = parse_result_lang(result_language)
|
|
filename = get_file_name(query, 'tcgsummons', query_langs)
|
|
return Response[Summon](response=load_category(result_lang, 'tcgsummons', filename))
|