Source code for feder.virus_scan.views

from django.core.exceptions import SuspiciousOperation
from django.http import JsonResponse
from django.views.generic import View

from .models import Request
from .signer import TokenSigner
from .tasks import scan_request


[docs] class RequestWebhookView(View): signer = TokenSigner() def post(self, request, *args, **kwargs): from .engine import get_engine current_engine = get_engine() token = self.signer.unsign(self.request.GET.get("token", "")) if token != current_engine.name: raise SuspiciousOperation("Token does not match the current engine.") for request in ( Request.objects.filter(status=Request.STATUS.queued) .filter(engine_name=current_engine.name) .all() ): scan_request(pk=request.pk) return JsonResponse({"status": "OK"})