From 680444fedd34ad178b9d84175f3091b57f5c08f8 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Wed, 5 Jun 2024 18:42:36 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=20=D0=97=D0=B0=D1=85=D0=B0?= =?UTF-8?q?=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/api/views.py | 29 +++++++++++++++++++++++++---- server/proj/conf/urls.py | 3 +-- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/server/proj/api/views.py b/server/proj/api/views.py index 1a1f50d..9e0b6c8 100644 --- a/server/proj/api/views.py +++ b/server/proj/api/views.py @@ -7,7 +7,7 @@ from rest_framework import status from rest_framework.decorators import action from rest_framework.permissions import AllowAny -class FetchAndServeFile(ViewSet): +""" class FetchAndServeFile(ViewSet): def list(self, request): file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/fc6377b2dae75d29358783bc/play" @@ -29,7 +29,7 @@ class FetchAndServeFile(ViewSet): except requests.RequestException as e: return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST) - """ def get(self, request, station, song_id, *args, **kwargs): + def get(self, request, station, song_id, *args, **kwargs): file_url = f"http://82.97.242.49:10084/api/station/{station}/file/{song_id}/play" api_key = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" @@ -47,6 +47,27 @@ class FetchAndServeFile(ViewSet): return file_response except requests.RequestException as e: - return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST) """ + return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST) """ - \ No newline at end of file +class FetchAndServeFile(APIView): + permission_classes = [AllowAny] + + def get(self, request, station, song_id, *args, **kwargs): + file_url = f"http://82.97.242.49:10084/api/station/{station}/file/{song_id}/play" + api_key = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" + + headers = { + "Authorization": f"Bearer {api_key}" + } + + try: + response = requests.get(file_url, headers=headers) + response.raise_for_status() + + # Create a response with the appropriate content type and headers + file_response = HttpResponse(response.content, content_type='audio/mpeg') + file_response['Content-Disposition'] = 'attachment; filename="output.mp3"' + + return file_response + except requests.RequestException as e: + return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST) \ No newline at end of file diff --git a/server/proj/conf/urls.py b/server/proj/conf/urls.py index 585f2b4..7dd2b76 100644 --- a/server/proj/conf/urls.py +++ b/server/proj/conf/urls.py @@ -21,13 +21,12 @@ from api.views import FetchAndServeFile router = routers.DefaultRouter() router.register(r'news', newsViews.NewsViewSet) #router.register(r'profiles', ProfileViewSet, basename='profiles') -router.register(r'single_play', FetchAndServeFile, basename='single_play') router.register(r'teams', TeamViewSet, basename='teams') router.register(r'rubriks', RubricViewSet, basename='rubriks') urlpatterns = [ path('api/admin/', admin.site.urls), - + path('api/fetch-file///', FetchAndServeFile.as_view(), name='fetch-file'), path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'), path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), path('api/token/verify/', TokenVerifyView.as_view(), name='token_verify'),