Add whitelist endpoint
This commit is contained in:
parent
5c3f190b35
commit
8f784e5b89
@ -1,10 +1,11 @@
|
||||
from django.urls import path
|
||||
|
||||
from .views import RCONServersAPI, RCONServerDetailAPI, ListPlayers
|
||||
from .views import RCONServersAPI, RCONServerDetailAPI, ListPlayers, WhitelistAPI
|
||||
|
||||
app_name = "rcon_api"
|
||||
urlpatterns = [
|
||||
path("<str:guild_id>/", view=RCONServersAPI.as_view(), name='guild_servers'),
|
||||
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'),
|
||||
]
|
||||
|
||||
@ -10,6 +10,7 @@ from .models import RconServer
|
||||
from .utils import create_error_response, create_success_response, create_rcon_response
|
||||
from utils.api_utils import PaginatedAPIView
|
||||
from .serializers import RconServerSerializer
|
||||
from users.models import User
|
||||
|
||||
# Create your views here.
|
||||
|
||||
@ -70,3 +71,25 @@ class ListPlayers(PaginatedAPIView):
|
||||
|
||||
return create_error_response('RCON Server Does Not Exist',
|
||||
status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
|
||||
class WhitelistAPI(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request, guild_id, name, format=None):
|
||||
discord_id = request.data.get('discord_id')
|
||||
if not discord_id:
|
||||
return create_error_response("A Discord ID is required",
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
user = User.get_user_by_id(discord_id)
|
||||
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.whitelist(user.steam_id)
|
||||
return create_rcon_response(resp, status=status.HTTP_200_OK)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user