mirror of
https://github.com/fergalmoran/dss.api.git
synced 2025-12-22 09:18:13 +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)
|
||||
|
||||
@@ -36,7 +36,10 @@ class DebugView(APIView):
|
||||
|
||||
def post(self, request, format=None):
|
||||
try:
|
||||
activity.post_activity('user:message', request.user.userprofile.get_session_id(), 'Hello Sailor')
|
||||
activity.post_activity(
|
||||
channel='user:message',
|
||||
message='Hello Sailor',
|
||||
session=request.user.userprofile.get_session_id())
|
||||
except Exception as ex:
|
||||
print(ex)
|
||||
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
from requests.packages.urllib3.connection import ConnectionError
|
||||
from dss import settings
|
||||
|
||||
|
||||
def get_server_details(server, port, mount):
|
||||
server = "http://%s:%s/status.xsl?mount=/%s" % (server, port, mount)
|
||||
print("Getting info for %s" % server)
|
||||
def get_server_details():
|
||||
url = "http://%s:%s/status.xsl?mount=/%s" % (settings.ICE_HOST, settings.ICE_PORT, settings.ICE_MOUNT)
|
||||
print("Getting info for %s" % url)
|
||||
try:
|
||||
response = requests.get(server)
|
||||
response = requests.get(url)
|
||||
html = response.text
|
||||
if html:
|
||||
try:
|
||||
@@ -40,6 +41,11 @@ def get_server_details(server, port, mount):
|
||||
}
|
||||
|
||||
|
||||
def shuffle():
|
||||
url = "http://%s:%s/a/shuffle" % (settings.RADIO_HOST, settings.RADIO_PORT)
|
||||
r = requests.post(url)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
d = get_server_details("localhost", "8000", "dss")
|
||||
print(d)
|
||||
|
||||
@@ -6,12 +6,12 @@ from dss import settings
|
||||
logger = logging.getLogger('dss')
|
||||
|
||||
|
||||
def post_activity(channel, session, message):
|
||||
def post_activity(channel, message, session=''):
|
||||
r = redis.StrictRedis(host=settings.REDIS_HOST, port=6379, db=0)
|
||||
payload = json.dumps({'session': session, 'message': message})
|
||||
response = r.publish(channel, payload)
|
||||
logger.debug("Message sent: {0}".format(payload))
|
||||
|
||||
if __name__ == '__main__':
|
||||
post_activity('site:broadcast', '3a596ca6c97065a67aca3dc4a3ba230d688cf413', 'bargle')
|
||||
post_activity('site:broadcast', 'bargle', '3a596ca6c97065a67aca3dc4a3ba230d688cf413')
|
||||
|
||||
|
||||
@@ -29,20 +29,14 @@ class Notification(BaseModel):
|
||||
|
||||
def save(self, force_insert=False, force_update=False, using=None,
|
||||
update_fields=None):
|
||||
|
||||
"""
|
||||
if self._activity.should_send_email():
|
||||
self.send_notification_email()
|
||||
"""
|
||||
|
||||
post_activity(
|
||||
'user:message',
|
||||
self.to_user.get_session_id(),
|
||||
{
|
||||
channel='user:message',
|
||||
message={
|
||||
'from_user': self.from_user.slug if self.from_user is not None else settings.DEFAULT_USER_NAME,
|
||||
'message': self.target_desc
|
||||
})
|
||||
|
||||
},
|
||||
session=self.to_user.get_session_id(),
|
||||
)
|
||||
return super(Notification, self).save(force_insert, force_update, using, update_fields)
|
||||
|
||||
def send_notification_email(self):
|
||||
|
||||
@@ -60,4 +60,7 @@ def update_geo_info_task(ip_address, profile_id):
|
||||
@task
|
||||
def notify_subscriber(session_id, uid):
|
||||
if session_id is not None:
|
||||
activity.post_activity('user:process', session_id, {'type': 'waveform', 'target': uid})
|
||||
activity.post_activity(
|
||||
channel='user:process',
|
||||
message={'type': 'waveform', 'target': uid},
|
||||
session=session_id)
|
||||
|
||||
Reference in New Issue
Block a user