mirror of
https://github.com/norohind/jubilant-system-core.git
synced 2025-04-14 10:37:12 +03:00
68 lines
2.6 KiB
Python
68 lines
2.6 KiB
Python
from .Mappings import perform_info_mapping, perform_news_mapping
|
|
from .Exceptions import *
|
|
from .Requester import *
|
|
from loguru import logger
|
|
from . import Converters
|
|
import json
|
|
|
|
|
|
def get_squad_news(squad_id) -> dict | None:
|
|
"""
|
|
Returns news of squadron with specified id or None if squadron doesn't exists or there is no news
|
|
|
|
:param squad_id:
|
|
:return:
|
|
"""
|
|
|
|
news_request: requests.Response = request(BASE_URL + NEWS_ENDPOINT, params={'squadronId': squad_id})
|
|
if news_request.status_code != 200: # must not happen
|
|
logger.warning(f'Got not 200 status code on requesting news, content: {news_request.content}, '
|
|
f'code: {news_request.status_code}')
|
|
|
|
squad_news: dict = news_request.json()['squadron']
|
|
|
|
if isinstance(squad_news, list): # check squadron 2517 for example 0_0
|
|
# squadron have no public statements
|
|
return None
|
|
|
|
elif 'id' not in squad_news.keys(): # squadron doesn't FDEV
|
|
return None
|
|
|
|
else:
|
|
if 'public_statements' in squad_news.keys() and len(squad_news['public_statements']) > 0:
|
|
return perform_news_mapping(squad_news['public_statements'][0])
|
|
|
|
|
|
def get_squad_info(squad_id: int) -> dict | None:
|
|
"""Returns information about squadron with specified id or None if squadrons doesn't exists on FDEV side
|
|
|
|
:param squad_id: id of squad to update/insert
|
|
:return: dict with state of squadron or None if squad not found
|
|
"""
|
|
|
|
"""
|
|
Request squad's info
|
|
|
|
if squad exists FDEV
|
|
return squadron state
|
|
|
|
if squad doesn't exists FDEV
|
|
return None
|
|
"""
|
|
|
|
squad_request: requests.Response = request(BASE_URL + INFO_ENDPOINT, params={'squadronId': squad_id})
|
|
|
|
if squad_request.status_code == 200: # squad exists FDEV
|
|
squad_request_json: dict = squad_request.json()['squadron']
|
|
squad_request_json['ownerName'] = Converters.dehexify(squad_request_json['ownerName']) # normalize value
|
|
squad_request_json['userTags'] = json.dumps(squad_request_json['userTags'])
|
|
squad_request_json = perform_info_mapping(squad_request_json)
|
|
|
|
return squad_request_json
|
|
|
|
elif squad_request.status_code == 404: # squad doesn't exists FDEV
|
|
return None
|
|
|
|
else: # any other codes (except 418, that one handles in authed_request), never should happen
|
|
logger.warning(f'Unknown squad info status_code: {squad_request.status_code}, content: {squad_request.content}')
|
|
raise FAPIUnknownStatusCode(f'Status code: {squad_request.status_code}, content: {squad_request.content}') |