from fastapi import APIRouter, Depends from resonance_engine.api import schemas, security from resonance_engine.config import settings from resonance_engine.utils.encrypter import encrypter router = APIRouter( prefix="/config", tags=["Config"], dependencies=[Depends(security.authenticate)], ) @router.get( "/", operation_id="get_config", response_model=schemas.ConfigResponse, ) def get_config() -> schemas.ConfigResponse: return schemas.ConfigResponse( app=schemas.AppConfig( environment=settings.environment, service_name=settings.service_name, service_version=settings.service_version, ), aws=schemas.AwsConfig( region_name=settings.aws_region_name, ), dsql=schemas.DsqlConfig( endpoint=settings.dsql_endpoint, token_expires_in=settings.dsql_token_expires_in, ), kafka=schemas.KafkaConfig( bootstrap_servers=settings.kafka_bootstrap_servers, use_ssl=settings.kafka_use_ssl, topics=schemas.KafkaTopicsConfig( profile=settings.kafka_topic_fan_profile, top_artists=settings.kafka_topic_fan_top_artists, top_tracks=settings.kafka_topic_fan_top_tracks, recently_played=settings.kafka_topic_fan_recently_played, playlists=settings.kafka_topic_fan_playlists, saved_albums=settings.kafka_topic_fan_saved_albums, saved_tracks=settings.kafka_topic_fan_saved_tracks, followed_artists=settings.kafka_topic_fan_followed_artists, ), ), sqs=schemas.SqsConfig( fan_collect_spotify_songwhip_queue_url=settings.sqs_fan_collect_spotify_songwhip_queue_url, fan_collect_spotify_smf_sme_queue_url=settings.sqs_fan_collect_spotify_smf_sme_queue_url, fan_collect_spotify_smf_orch_queue_url=settings.sqs_fan_collect_spotify_smf_orch_queue_url, fan_collect_deezer_songwhip_queue_url=settings.sqs_fan_collect_deezer_songwhip_queue_url, fan_collect_amazon_songwhip_queue_url=settings.sqs_fan_collect_amazon_songwhip_queue_url, fan_collect_apple_songwhip_queue_url=settings.sqs_fan_collect_apple_songwhip_queue_url, ), encryption=schemas.EncryptionConfig( key_ids=encrypter.key_ids, active_key_id=encrypter.active_key_id, keys_secret_name=settings.encryption_keys_secret_name, ), dsp=schemas.DspConfig( spotify_songwhip_client_id=settings.spotify_songwhip_client_id, spotify_songwhip_client_secret_name=settings.spotify_songwhip_client_secret_name, spotify_smf_sme_client_id=settings.spotify_smf_sme_client_id, spotify_smf_sme_client_secret_name=settings.spotify_smf_sme_client_secret_name, spotify_smf_orch_client_id=settings.spotify_smf_orch_client_id, spotify_smf_orch_client_secret_name=settings.spotify_smf_orch_client_secret_name, ), auth=schemas.AuthConfig.from_settings(), fan_fanout=schemas.FanFanoutConfig( window_s=settings.fan_fanout_window_s, async_enabled=settings.fan_fanout_async_enabled, ), fan_collect=schemas.FanCollectConfig( worker_timeout_s=settings.fan_collect_worker_timeout_s, token_error_revoke_threshold=settings.fan_collect_token_error_revoke_threshold, intervals=schemas.FanCollectIntervalsConfig( profile=settings.fan_collect_profile_interval_s, top_artists=settings.fan_collect_top_artists_interval_s, top_tracks=settings.fan_collect_top_tracks_interval_s, recently_played=settings.fan_collect_recently_played_interval_s, playlists=settings.fan_collect_playlists_interval_s, saved_albums=settings.fan_collect_saved_albums_interval_s, saved_tracks=settings.fan_collect_saved_tracks_interval_s, followed_artists=settings.fan_collect_followed_artists_interval_s, ), ), )