mirror of
https://github.com/fergalmoran/dss.api.git
synced 2025-12-22 17:28:55 +00:00
Pre switch
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
import datetime
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.status import HTTP_400_BAD_REQUEST, HTTP_201_CREATED, HTTP_204_NO_CONTENT, HTTP_200_OK
|
||||
from rest_framework.views import APIView
|
||||
from core import realtime
|
||||
from core.radio import ice_scrobbler
|
||||
from core.realtime import activity
|
||||
from dss import settings
|
||||
from spa.models import Mix, UserProfile
|
||||
from core.utils import session
|
||||
|
||||
|
||||
class Helper(APIView):
|
||||
pass
|
||||
|
||||
|
||||
class ActivityHelper(APIView):
|
||||
def get_session(self, request):
|
||||
sessions = session.get_active_sessions(request.session)
|
||||
|
||||
return sessions[0]
|
||||
|
||||
|
||||
class ChatHelper(ActivityHelper):
|
||||
def post(self, request):
|
||||
# do some persistence stuff with the chat
|
||||
from core.realtime import chat
|
||||
|
||||
# user = self.get_session(request)
|
||||
u = request.user
|
||||
if not u.is_anonymous():
|
||||
image = u.userprofile.get_sized_avatar_image(32, 32)
|
||||
user = u.userprofile.get_nice_name()
|
||||
else:
|
||||
image = settings.DEFAULT_USER_IMAGE
|
||||
user = settings.DEFAULT_USER_NAME
|
||||
|
||||
chat.post_chat(request.data['user'], image, user, request.data['message'])
|
||||
return Response(request.data['message'], HTTP_201_CREATED)
|
||||
|
||||
|
||||
class ActivityPlayHelper(ActivityHelper):
|
||||
def post(self, request):
|
||||
if 'id' in self.request.query_params:
|
||||
try:
|
||||
mix = Mix.objects.get(slug=self.request.query_params.get('id'))
|
||||
mix.add_play(request.user)
|
||||
data = {
|
||||
'user': request.user.userprofile.get_nice_name() if request.user.is_authenticated() else settings.DEFAULT_USER_NAME,
|
||||
'date': datetime.datetime.now()
|
||||
}
|
||||
return Response(data, HTTP_201_CREATED)
|
||||
except Mix.DoesNotExist:
|
||||
pass
|
||||
|
||||
return Response("Invalid URI or object does not exist", HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
class UserSlugCheckHelper(Helper):
|
||||
def get(self, request):
|
||||
try:
|
||||
UserProfile.objects.get(slug=self.request.query_params.get('slug'))
|
||||
return Response(status=HTTP_204_NO_CONTENT)
|
||||
except UserProfile.DoesNotExist:
|
||||
return Response(status=HTTP_200_OK)
|
||||
|
||||
|
||||
class RadioHelper(Helper):
|
||||
def get(self, request):
|
||||
if 'rmix' in self.request.query_params:
|
||||
m = Mix.objects.order_by('?').first()
|
||||
ret = {
|
||||
'url': m.get_stream_url(),
|
||||
'slug': m.get_full_url(),
|
||||
'title': str(m)
|
||||
}
|
||||
elif 'np' in self.request.query_params:
|
||||
ret = ice_scrobbler.get_server_details()
|
||||
|
||||
return Response(data=ret, status=HTTP_200_OK)
|
||||
|
||||
def post(self, request):
|
||||
if 'action' in request.query_params:
|
||||
action = request.query_params.get('action')
|
||||
if action == 'shuffle':
|
||||
ice_scrobbler.shuffle()
|
||||
return Response(status=HTTP_200_OK)
|
||||
if 'update' in request.query_params and 'url' in request.query_params:
|
||||
activity.post_activity('site:radio_changed', message={
|
||||
'description': request.query_params.get('update'),
|
||||
'url': request.query_params.get('url')
|
||||
})
|
||||
return Response(status=HTTP_400_BAD_REQUEST)
|
||||
|
||||
Reference in New Issue
Block a user