예제 #1
0
    def execute_request(self, request: Request) -> Response:
        """
        Parse the request process it with strawberry and return a response
        Args:
            request: The chalice request this contains the headers and body

        Returns:
            A chalice response
        """
        if self.graphiql:
            if (self.has_html_been_asked_for(request.headers)
                    and request.method == "GET"):
                graphiql_page: str = self.render_graphiql()
                return Response(
                    body=graphiql_page,
                    headers={"content-type": "text/html"},
                    status_code=200,
                )

        if not request.method == "POST":
            return self.invalid_rest_verb_response()

        try:
            request_data = request.json_body
        except BadRequestError:
            return self.invalid_query_response()

        if request_data is None:
            return self.invalid_query_response()
        try:
            query = request_data["query"]
            variables = request_data.get("variables")
            operation_name = request_data.get("operationName")

        except (KeyError, TypeError):
            return self.invalid_query_response()

        result: ExecutionResult = self._schema.execute_sync(
            query,
            variable_values=variables,
            context_value=request,
            operation_name=operation_name,
            root_value=None,
        )

        http_result: GraphQLHTTPResponse = process_result(result)

        return Response(body=http_result)
예제 #2
0
 def process_result(self, result: ExecutionResult) -> GraphQLHTTPResponse:
     return process_result(result)
예제 #3
0
파일: views.py 프로젝트: estyxx/strawberry
 async def process_result(self, request: HttpRequest,
                          result: ExecutionResult) -> GraphQLHTTPResponse:
     return process_result(result)