예제 #1
0
    def validate(self, request, response):
        try:
            server = self.spec.get_server(request.full_url_pattern)
        # don't process if server errors
        except OpenAPIMappingError as exc:
            return ResponseValidationResult([exc, ], None, None)

        operation_pattern = get_operation_pattern(
            server.default_url, request.full_url_pattern
        )

        try:
            operation = self.spec.get_operation(
                operation_pattern, request.method)
        # don't process if operation errors
        except OpenAPIMappingError as exc:
            return ResponseValidationResult([exc, ], None, None)

        try:
            operation_response = operation.get_response(
                str(response.status_code))
        # don't process if operation response errors
        except OpenAPIMappingError as exc:
            return ResponseValidationResult([exc, ], None, None)

        data, data_errors = self._get_data(response, operation_response)

        headers, headers_errors = self._get_headers(
            response, operation_response)

        errors = data_errors + headers_errors
        return ResponseValidationResult(errors, data, headers)
예제 #2
0
    def validate(self, request):
        try:
            server = self.spec.get_server(request.full_url_pattern)
        # don't process if server errors
        except OpenAPIMappingError as exc:
            return RequestValidationResult([
                exc,
            ], None, None)

        operation_pattern = get_operation_pattern(server.default_url,
                                                  request.full_url_pattern)

        try:
            operation = self.spec.get_operation(operation_pattern,
                                                request.method)
        # don't process if operation errors
        except OpenAPIMappingError as exc:
            return RequestValidationResult([
                exc,
            ], None, None)

        params, params_errors = self._get_parameters(request, operation)
        body, body_errors = self._get_body(request, operation)

        errors = params_errors + body_errors
        return RequestValidationResult(errors, body, params)
예제 #3
0
    def validate(self, request):
        try:
            server = self.spec.get_server(request.full_url_pattern)
        # don't process if server errors
        except InvalidServer as exc:
            return RequestValidationResult([
                exc,
            ], None, None)

        operation_pattern = get_operation_pattern(server.default_url,
                                                  request.full_url_pattern)

        try:
            path = self.spec[operation_pattern]
        except InvalidPath as exc:
            return RequestValidationResult([
                exc,
            ], None, None)

        try:
            operation = self.spec.get_operation(operation_pattern,
                                                request.method)
        # don't process if operation errors
        except InvalidOperation as exc:
            return RequestValidationResult([
                exc,
            ], None, None)

        params, params_errors = self._get_parameters(
            request,
            chain(iteritems(operation.parameters), iteritems(path.parameters)))

        body, body_errors = self._get_body(request, operation)

        errors = params_errors + body_errors
        return RequestValidationResult(errors, body, params)