def bot_detection(self, request):
        castle_event_name = self.get_castle_event_name(request)

        if castle_event_name == "":
            print('rejecting request')
            return {"status": 405, "statusDescription": "Method Not Allowed"}

        castle_assessment = self.get_castle_assessment(request,
                                                       castle_event_name)

        risk_score = castle_assessment.get('risk')
        prod_status = "200"

        if risk_score > self.RISK_THRESHOLD or castle_assessment.get(
                'action') == "deny":
            prod_status = "403"

        if castle_assessment.get('action') == "allow":
            return KongService().forward_to_kong(request)

        obj = {
            "prod_status": prod_status,
            "risk_score": risk_score,
            "risk_threshold": self.RISK_THRESHOLD,
            "castle_assessment": castle_assessment
        }

        response = Parser.parser_response(obj)

        return response