yzk_wechat_event/apps/jqr/views.py

35 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=r'event/(?P<path>\w+)',)
def verify(self, request, path, *args, **kwargs):
[business, corpid, agentid, uid] = path.split('_')
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()