mirror of
https://github.com/nexus-stc/hyperboria
synced 2025-02-11 09:56:46 +01:00
- [nexus] Remove outdated protos - [nexus] Development - [nexus] Development - [nexus] Development - [nexus] Development - [nexus] Development - [nexus] Refactor views - [nexus] Update aiosumma - [nexus] Add tags - [nexus] Development - [nexus] Update repository - [nexus] Update repository - [nexus] Update dependencies - [nexus] Update dependencies - [nexus] Fixes for MetaAPI - [nexus] Support for new queries - [nexus] Adopt new versions of search - [nexus] Improving Nexus - [nexus] Various fixes - [nexus] Add profile - [nexus] Fixes for ingestion - [nexus] Refactorings and bugfixes - [idm] Add profile methods - [nexus] Fix stalled nexus-meta bugs - [nexus] Various bugfixes - [nexus] Restore IDM API functionality GitOrigin-RevId: a0842345a6dde5b321279ab5510a50c0def0e71a
107 lines
4.5 KiB
Python
107 lines
4.5 KiB
Python
import asyncio
|
|
import logging
|
|
|
|
import uvloop
|
|
from aiogrobid import GrobidClient
|
|
from aioipfs import AsyncIPFS as AsyncIPFS
|
|
from idm.api.aioclient import IdmApiGrpcClient
|
|
from library.aiogrpctools import AioGrpcServer
|
|
from library.aiopostgres import AioPostgresPoolHolder
|
|
from library.configurator import Configurator
|
|
from library.logging import configure_logging
|
|
from library.telegram.base import BaseTelegramClient
|
|
from nexus.hub.configs import get_config
|
|
from nexus.hub.services.delivery import DeliveryService
|
|
from nexus.hub.services.mutual_aid_service import MutualAidService
|
|
from nexus.hub.services.submitter import SubmitterService
|
|
from nexus.hub.user_manager import UserManager
|
|
from nexus.meta_api.aioclient import MetaApiGrpcClient
|
|
|
|
|
|
class GrpcServer(AioGrpcServer):
|
|
def __init__(self, config: Configurator):
|
|
self.log_config(config)
|
|
self.config = config
|
|
super().__init__(address=config['grpc']['address'], port=config['grpc']['port'])
|
|
|
|
self.pool_holder = AioPostgresPoolHolder(
|
|
conninfo=f'dbname={config["database"]["database"]} '
|
|
f'user={config["database"]["username"]} '
|
|
f'password={config["database"]["password"]} '
|
|
f'host={config["database"]["host"]}',
|
|
)
|
|
self.starts.append(self.pool_holder)
|
|
|
|
self.telegram_clients = {}
|
|
self.mutual_aid_services = {}
|
|
|
|
telegram_bot_config = config['telegram']['admin']
|
|
self.admin_telegram_client = BaseTelegramClient(
|
|
app_id=telegram_bot_config['app_id'],
|
|
app_hash=telegram_bot_config['app_hash'],
|
|
database=telegram_bot_config.get('database'),
|
|
mtproxy=telegram_bot_config.get('mtproxy'),
|
|
phone=telegram_bot_config['phone'],
|
|
)
|
|
|
|
for telegram_bot in config['telegram']['bots']:
|
|
telegram_bot_config = config['telegram']['bots'][telegram_bot]
|
|
telegram_client = BaseTelegramClient(
|
|
app_id=telegram_bot_config['app_id'],
|
|
app_hash=telegram_bot_config['app_hash'],
|
|
bot_token=telegram_bot_config['bot_token'],
|
|
database=telegram_bot_config.get('database'),
|
|
mtproxy=telegram_bot_config.get('mtproxy'),
|
|
)
|
|
self.telegram_clients[telegram_bot] = telegram_client
|
|
if mutual_aid_group_id := telegram_bot_config.get('mutual_aid_group_id'):
|
|
self.mutual_aid_services[telegram_bot] = MutualAidService(
|
|
admin_telegram_client=self.admin_telegram_client,
|
|
bot_telegram_client=telegram_client,
|
|
mutual_aid_group_id=mutual_aid_group_id,
|
|
)
|
|
self.starts.append(self.admin_telegram_client)
|
|
self.starts.extend(self.telegram_clients.values())
|
|
self.starts.extend(self.mutual_aid_services.values())
|
|
|
|
self.grobid_client = GrobidClient(base_url=config['grobid']['url'])
|
|
self.idm_client = IdmApiGrpcClient(endpoint=config['idm']['endpoint'])
|
|
self.ipfs_client = AsyncIPFS(host=config['ipfs']['address'], port=config['ipfs']['port'])
|
|
self.meta_api_client = MetaApiGrpcClient(endpoint=config['meta_api']['endpoint'])
|
|
self.starts.extend([self.grobid_client, self.idm_client, self.ipfs_client, self.meta_api_client])
|
|
self.user_manager = UserManager()
|
|
|
|
self.delivery_service = DeliveryService(
|
|
application=self,
|
|
service_name=config['application']['service_name'],
|
|
is_sharience_enabled=config['application']['is_sharience_enabled'],
|
|
maintenance_picture_url=config['application'].get('maintenance_picture_url', ''),
|
|
should_parse_with_grobid=config['application']['should_parse_with_grobid'],
|
|
should_store_hashes=config['application']['should_store_hashes'],
|
|
telegram_bot_configs=config['telegram']['bots'],
|
|
pylon_config=config['pylon'],
|
|
)
|
|
self.submitter_service = SubmitterService(
|
|
application=self,
|
|
service_name=config['application']['service_name'],
|
|
)
|
|
self.starts.extend([self.delivery_service, self.submitter_service])
|
|
|
|
|
|
def main():
|
|
config = get_config()
|
|
configure_logging(config)
|
|
loop = uvloop.new_event_loop()
|
|
asyncio.set_event_loop(loop)
|
|
grpc_server = GrpcServer(config)
|
|
return loop.run_until_complete(grpc_server.start_and_wait())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
result = main()
|
|
logging.getLogger('debug').debug({
|
|
'action': 'exit',
|
|
'mode': 'main',
|
|
'result': str(result)
|
|
})
|