"""Utils for making requests to graphql-router.""" from gql import Client from gql import gql as gql_query from gql.transport.requests import RequestsHTTPTransport import product_review.config as config def strip_query(query_string): """Strip newlines and extra spaces from query string.""" return ' '.join(query_string.split()).replace('\n', '') def make_request(query_string, params, headers={}): """Format and send request to graphql-router. Args: query_string (str): graphql formatted request body params (dict): parameters to inject into body headers (dict): HTTP headers for request Returns: dict: response directly from graphql-router """ headers['apollographql-client-name'] = config.SERVICE_NAME headers['apollographql-client-version'] = '1' transport = RequestsHTTPTransport( url=config.GRAPHQL_URL, use_json=True, headers=headers, verify=True, retries=3 ) client = Client( transport=transport, fetch_schema_from_transport=False, ) query = gql_query(query_string) return client.execute(query, variable_values=params)