Skip to content

Commit

Permalink
views: zwrite view
Browse files Browse the repository at this point in the history
  • Loading branch information
asedeno committed May 3, 2020
1 parent cadb996 commit bae9550
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
14 changes: 14 additions & 0 deletions roost_backend/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,3 +160,17 @@ class Meta:
# pylint: disable=no-member, protected-access
MessageSerializer._declared_fields['class'] = serializers.CharField(source='zclass')
# pylint: enable=no-member, protected-access


class OutgoingMessageSerializer(serializers.Serializer):
instance = serializers.CharField()
recipient = serializers.CharField()
opcode = serializers.CharField(default='')
signature = serializers.CharField(default='')
message = serializers.CharField()


# class is a reserved word, so let's do this the hard way.
# pylint: disable=no-member, protected-access
OutgoingMessageSerializer._declared_fields['class'] = serializers.CharField()
# pylint: enable=no-member, protected-access
1 change: 1 addition & 0 deletions roost_backend/urls_v1.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@
path('messages', views.MessageView.as_view()),
path('bytime', views.MessageByTimeView.as_view()),
path('zephyrcreds', views.ZephyrCredsView.as_view()),
path('zwrite', views.ZWriteView.as_view()),
]
16 changes: 15 additions & 1 deletion roost_backend/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,20 @@ def post(self, request):
})


@method_decorator(COMMON_DECORATORS, name='dispatch')
class ZWriteView(APIView):
serializer_class = serializers.OutgoingMessageSerializer

def post(self, request):
serializer = self.serializer_class(data=request.data)
serializer.is_valid(raise_exception=True)
request.user.send_to_user_process({
'type': 'zwrite',
'message': serializer.validated_data,
})
return Response()


# Roost's endpoints:
# Done:
# app.post('/v1/auth
Expand All @@ -205,11 +219,11 @@ def post(self, request):
# app.post('/v1/unsubscribe', requireUser
# app.get('/v1/messages', requireUser
# app.get('/v1/bytime', requireUser
# app.post('/v1/zwrite', requireUser
# Stubbed:
# app.get('/v1/zephyrcreds', requireUser
# app.post('/v1/zephyrcreds', requireUser
# To do:
# app.post('/v1/zwrite', requireUser

# Also, a websocket at /v1/socket/websocket
# message types:
Expand Down

0 comments on commit bae9550

Please sign in to comment.