Fix channel nomenclature
This commit is contained in:
@@ -3,7 +3,8 @@ import websockets
|
|||||||
import json
|
import json
|
||||||
import uuid
|
import uuid
|
||||||
import os
|
import os
|
||||||
from drb_cdb_api import DRBCDBAPI, ConfigGenerator
|
from drb_cdb_api import DRBCDBAPI
|
||||||
|
from drb_cdb_types import ConfigGenerator
|
||||||
from server_api import RadioAPIClient
|
from server_api import RadioAPIClient
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
@@ -58,21 +59,21 @@ async def join_server(system_id, guild_id, channel_id):
|
|||||||
op25_status = await drb_api.get_op25_status()
|
op25_status = await drb_api.get_op25_status()
|
||||||
print("OP25 status:", op25_status)
|
print("OP25 status:", op25_status)
|
||||||
|
|
||||||
# Check if OP25 is stopped, if so set the selected channel, otherwise
|
# Check if OP25 is stopped, if so set the selected system, otherwise do nothing
|
||||||
if 'status' not in op25_status or op25_status['status'] == "stopped":
|
if 'status' not in op25_status or op25_status['status'] == "stopped":
|
||||||
chn_details = await srv_api.get_channel_details(channel_id)
|
sys_details = await srv_api.get_system_details(system_id)
|
||||||
print("Channel details", chn_details)
|
print("System details:", sys_details)
|
||||||
if not chn_details:
|
if not sys_details:
|
||||||
# TODO - handle not having channel details
|
# TODO - handle not having channel details
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Generate the config for the channel requested
|
# Generate the config for the channel requested
|
||||||
chn_config = ConfigGenerator(
|
chn_config = ConfigGenerator(
|
||||||
type=chn_details['decode_mode'],
|
type=sys_details['decode_mode'],
|
||||||
systemName=chn_details['name'],
|
systemName=sys_details['name'],
|
||||||
channels=chn_details['frequency_list_khz'],
|
frequencys=sys_details['frequency_list_khz'],
|
||||||
tags=chn_details['tags'],
|
tags=sys_details['tags'],
|
||||||
whitelist=chn_details['tag_whitelist'])
|
whitelist=sys_details['tag_whitelist'])
|
||||||
|
|
||||||
# Set the OP25 config
|
# Set the OP25 config
|
||||||
drb_api.generate_op25_config(chn_config)
|
drb_api.generate_op25_config(chn_config)
|
||||||
@@ -85,7 +86,7 @@ async def join_server(system_id, guild_id, channel_id):
|
|||||||
async def leave_server(guild_id):
|
async def leave_server(guild_id):
|
||||||
# Takes guild ID
|
# Takes guild ID
|
||||||
bot_status = await drb_api.get_bot_status()
|
bot_status = await drb_api.get_bot_status()
|
||||||
print("Bot status", bot_status)
|
print("Bot status:", bot_status)
|
||||||
|
|
||||||
# Check if the bot is running
|
# Check if the bot is running
|
||||||
if 'bot_running' not in bot_status or not bot_status['bot_running']:
|
if 'bot_running' not in bot_status or not bot_status['bot_running']:
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ class ConfigGenerator:
|
|||||||
self,
|
self,
|
||||||
type: DecodeMode,
|
type: DecodeMode,
|
||||||
systemName: str,
|
systemName: str,
|
||||||
channels: List[str],
|
frequencys: List[str],
|
||||||
tags: Optional[List[TalkgroupTag]] = None,
|
tags: Optional[List[TalkgroupTag]] = None,
|
||||||
whitelist: Optional[List[int]] = None
|
whitelist: Optional[List[int]] = None
|
||||||
):
|
):
|
||||||
self.type = type
|
self.type = type
|
||||||
self.systemName = systemName
|
self.systemName = systemName
|
||||||
self.channels = channels
|
self.frequencys = frequencys
|
||||||
self.tags = tags
|
self.tags = tags
|
||||||
self.whitelist = whitelist
|
self.whitelist = whitelist
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ class ConfigGenerator:
|
|||||||
data = {
|
data = {
|
||||||
"type": self.type.value, # Use .value for Enum
|
"type": self.type.value, # Use .value for Enum
|
||||||
"systemName": self.systemName,
|
"systemName": self.systemName,
|
||||||
"channels": self.channels,
|
"frequencys": self.frequencys,
|
||||||
}
|
}
|
||||||
if self.tags is not None:
|
if self.tags is not None:
|
||||||
# Convert list of TalkgroupTag objects to list of dictionaries
|
# Convert list of TalkgroupTag objects to list of dictionaries
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class RadioAPIClient:
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
method (str): The HTTP method (e.g., 'GET', 'POST').
|
method (str): The HTTP method (e.g., 'GET', 'POST').
|
||||||
endpoint (str): The API endpoint path (e.g., '/channels').
|
endpoint (str): The API endpoint path (e.g., '/systems').
|
||||||
**kwargs: Additional arguments for httpx.AsyncClient.request.
|
**kwargs: Additional arguments for httpx.AsyncClient.request.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@@ -58,31 +58,31 @@ class RadioAPIClient:
|
|||||||
print(f"An error occurred while requesting {e.request.url!r}: {e}")
|
print(f"An error occurred while requesting {e.request.url!r}: {e}")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
async def get_channels(self):
|
async def get_systems(self):
|
||||||
"""
|
"""
|
||||||
Retrieves a summary list of all available radio channels.
|
Retrieves a summary list of all available radio systems.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
list: A list of channel summaries (e.g., [{"id": "channel_1", "name": "..."}]).
|
list: A list of system summaries (e.g., [{"id": "system_1", "name": "..."}]).
|
||||||
"""
|
"""
|
||||||
print(f"Fetching channels from {self.base_url}/channels")
|
print(f"Fetching systems from {self.base_url}/systems")
|
||||||
return await self._request("GET", "/channels")
|
return await self._request("GET", "/systems")
|
||||||
|
|
||||||
async def get_channel_details(self, channel_id: str):
|
async def get_system_details(self, system_id: str):
|
||||||
"""
|
"""
|
||||||
Retrieves detailed information for a specific channel.
|
Retrieves detailed information for a specific system.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
channel_id (str): The unique ID of the channel.
|
system_id (str): The unique ID of the system.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict: The channel details.
|
dict: The system details.
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
httpx.HTTPStatusError: If the channel is not found (404).
|
httpx.HTTPStatusError: If the system is not found (404).
|
||||||
"""
|
"""
|
||||||
print(f"Fetching details for channel: {channel_id} from {self.base_url}/channels/{channel_id}")
|
print(f"Fetching details for system: {system_id} from {self.base_url}/systems/{system_id}")
|
||||||
return await self._request("GET", f"/channels/{channel_id}")
|
return await self._request("GET", f"/systems/{system_id}")
|
||||||
|
|
||||||
async def list_clients(self):
|
async def list_clients(self):
|
||||||
"""
|
"""
|
||||||
@@ -132,26 +132,26 @@ async def example_api_usage():
|
|||||||
async with RadioAPIClient("http://localhost:5000") as api_client:
|
async with RadioAPIClient("http://localhost:5000") as api_client:
|
||||||
print("\n--- Getting Channels ---")
|
print("\n--- Getting Channels ---")
|
||||||
try:
|
try:
|
||||||
channels_summary = await api_client.get_channels()
|
systems_summary = await api_client.get_systems()
|
||||||
print("Channels Summary:", channels_summary)
|
print("Channels Summary:", systems_summary)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error getting channels: {e}")
|
print(f"Error getting systems: {e}")
|
||||||
|
|
||||||
print("\n--- Getting Channel Details (channel_1) ---")
|
print("\n--- Getting Channel Details (system_1) ---")
|
||||||
try:
|
try:
|
||||||
channel_details = await api_client.get_channel_details("channel_1")
|
system_details = await api_client.get_system_details("system_1")
|
||||||
print("Channel 1 Details:", channel_details)
|
print("Channel 1 Details:", system_details)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error getting channel details: {e}")
|
print(f"Error getting system details: {e}")
|
||||||
|
|
||||||
print("\n--- Getting Channel Details (non-existent) ---")
|
print("\n--- Getting Channel Details (non-existent) ---")
|
||||||
try:
|
try:
|
||||||
non_existent_channel = await api_client.get_channel_details("non_existent_channel")
|
non_existent_system = await api_client.get_system_details("non_existent_system")
|
||||||
print("Non-existent Channel Details:", non_existent_channel) # This should not print
|
print("Non-existent Channel Details:", non_existent_system) # This should not print
|
||||||
except httpx.HTTPStatusError as e:
|
except httpx.HTTPStatusError as e:
|
||||||
print(f"Caught expected error for non-existent channel: {e.response.status_code} - {e.response.json()}")
|
print(f"Caught expected error for non-existent system: {e.response.status_code} - {e.response.json()}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error getting non-existent channel details: {e}")
|
print(f"Error getting non-existent system details: {e}")
|
||||||
|
|
||||||
|
|
||||||
print("\n--- Listing Connected Clients ---")
|
print("\n--- Listing Connected Clients ---")
|
||||||
|
|||||||
Reference in New Issue
Block a user