36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
from rest_framework import viewsets
|
|
from rest_framework.decorators import action
|
|
from rest_framework.response import Response
|
|
|
|
from apps.jqr.parsers import WechatContentParser
|
|
from apps.jqr.renderers import WechatPublicContentRenderer
|
|
from apps.jqr.serializers import WechatPublicTokenSerializer, WechatEncryptSerializer
|
|
|
|
|
|
class WechatWorkerViewSet(viewsets.GenericViewSet):
|
|
|
|
@action(methods=['GET'], detail=False, serializer_class=WechatPublicTokenSerializer, url_path='event')
|
|
def verify(self, request):
|
|
print(self.request._request.path)
|
|
print(request.query_params)
|
|
serializer = self.get_serializer(data=request.query_params)
|
|
serializer.is_valid(raise_exception=True)
|
|
enchostr = serializer.data.get('echostr')
|
|
return Response(data=int(enchostr))
|
|
|
|
@verify.mapping.post
|
|
def message(self, request):
|
|
serializer = WechatEncryptSerializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
return Response(data=serializer.data)
|
|
|
|
def get_parsers(self):
|
|
if self.request.method == 'POST':
|
|
return [WechatContentParser()]
|
|
return super().get_parsers()
|
|
|
|
def get_renderers(self):
|
|
if self.request.method == 'POST':
|
|
return [WechatPublicContentRenderer()]
|
|
return super().get_renderers()
|