Added broadcast endpoint

This commit is contained in:
Dustin Pianalto 2020-08-18 00:02:28 -08:00
parent cbd2b2a60a
commit ee02452dd5
2 changed files with 23 additions and 1 deletions

View File

@ -1,6 +1,6 @@
from django.urls import path from django.urls import path
from .views import RCONServersAPI, RCONServerDetailAPI, ListPlayers, WhitelistAPI from .views import RCONServersAPI, RCONServerDetailAPI, ListPlayers, WhitelistAPI, BroadcastAPI
app_name = "rcon_api" app_name = "rcon_api"
urlpatterns = [ urlpatterns = [
@ -8,4 +8,5 @@ urlpatterns = [
path("<str:guild_id>/<str:name>/", view=RCONServerDetailAPI.as_view(), name="server_detail"), path("<str:guild_id>/<str:name>/", view=RCONServerDetailAPI.as_view(), name="server_detail"),
path("<str:guild_id>/<str:name>/listplayers/", view=ListPlayers.as_view(), name='listplayers'), path("<str:guild_id>/<str:name>/listplayers/", view=ListPlayers.as_view(), name='listplayers'),
path("<str:guild_id>/<str:name>/whitelist/", view=WhitelistAPI.as_view(), name='whitelist'), path("<str:guild_id>/<str:name>/whitelist/", view=WhitelistAPI.as_view(), name='whitelist'),
path("<str:guild_id>/<str:name>/broadcast/", view=BroadcastAPI.as_view(), name='broadcast'),
] ]

View File

@ -96,3 +96,24 @@ class WhitelistAPI(APIView):
status=status.HTTP_408_REQUEST_TIMEOUT) status=status.HTTP_408_REQUEST_TIMEOUT)
resp = ark.whitelist(user.steam_id) resp = ark.whitelist(user.steam_id)
return create_rcon_response(resp, status=status.HTTP_200_OK) return create_rcon_response(resp, status=status.HTTP_200_OK)
class BroadcastAPI(APIView):
permission_classes = [IsAuthenticated]
def post(self, request, guild_id, name, format=None):
message = request.data.get('message')
if not message:
return create_error_response('A message is required',
status=status.HTTP_400_BAD_REQUEST)
server: RconServer = RconServer.get_server(guild_id, name)
if not server:
return create_error_response('RCON Server Does Not Exist',
status=status.HTTP_404_NOT_FOUND)
ark = arcon.ARKServer(host=server.ip, port=server.port, password=server.password)
connected = ark.connect()
if not connected == 1:
return create_error_response('Connection Failure',
status=status.HTTP_408_REQUEST_TIMEOUT)
resp = ark.broadcast(message)
return create_rcon_response(resp, status=status.HTTP_200_OK)