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)
def process_result(self, result: ExecutionResult) -> GraphQLHTTPResponse: return process_result(result)
async def process_result(self, request: HttpRequest, result: ExecutionResult) -> GraphQLHTTPResponse: return process_result(result)