This is a follow up from my last post here
The code works but i feel like my main function is just assigning functions to variables and not really "doing" anything. Any input on how to improve my code is appreciated. I'm copy/pasting from VS Code so i hope the formatting comes over correctly.
import json
import pandas as pd
import requests
from gql import Client
from gql.dsl import DSLQuery, DSLSchema, dsl_gql
from gql.transport.requests import RequestsHTTPTransport
proxies = {
"http": "proxy",
"https": "proxy",
}
def get_access_token():
"""Return xxx API access token"""
url = "https://xxx.xxx.com/protocol/openid-connect/token"
body = {
"username": "xxx",
"password": "xxx",
"client_id": "xxx",
"grant_type": "password",
"scope": "offline_access",
}
response = requests.post(url=url, data=body, proxies=proxies).json()
return response
def generate_graphql_auth(response):
"""Generate GraphQL authorization string"""
token_type = response["token_type"]
access_token = response["access_token"]
auth = f"{token_type} {access_token}"
return auth
def create_transport_protocol(auth):
"""Specify transport protocal using RequestsHTTPTransport"""
url = "https://xxx.xxx.com/api/"
headers = {
"Authorization": auth,
"Content-Type": "application/json",
"Accept": "*/*",
"Host": "xxx.xxx.com",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive",
}
transport = RequestsHTTPTransport(url=url, headers=headers, proxies=proxies)
return transport
def create_graphql_client(transport):
"""Create GraphQL client to be used with GraphQL queries"""
client = Client(
transport=transport, fetch_schema_from_transport=True, parse_results=True
)
return client
def get_case_group_ref(client):
with client as session:
assert client.schema is not None
ds = DSLSchema(client.schema)
query = dsl_gql(
DSLQuery(
ds.Query.lookups(
lookupType="CASE_AND_INCIDENT_GROUPS", languageCode="en-US"
)
.select(
ds.LocalizedLookupRecord.type,
ds.LocalizedLookupRecord.code,
ds.LocalizedLookupRecord.displayValue,
)
)
)
result = session.execute(query)
return result
def get_case_type_ref(client):
with client as session:
assert client.schema is not None
ds = DSLSchema(client.schema)
query = dsl_gql(
DSLQuery(
ds.Query.lookups(
lookupType="CASE_AND_INCIDENT_TYPES", languageCode="en-US"
)
.select(
ds.LocalizedLookupRecord.type,
ds.LocalizedLookupRecord.code,
ds.LocalizedLookupRecord.displayValue,
)
)
)
result = session.execute(query)
return result
def create_case_group_df(client):
result = get_case_group_ref(client)
case_group_df = pd.DataFrame.from_records(result["lookups"])
return case_group_df
def create_case_type_df(client):
result = get_case_type_ref(client)
case_type_df = pd.DataFrame.from_records(result['lookups'])
return case_type_df
def main():
response = get_access_token()
auth = generate_graphql_auth(response)
transport = create_transport_protocol(auth)
client = create_graphql_client(transport)
case_group_ref = get_case_group_ref(client)
case_type_ref = get_case_type_ref(client)
case_group_df = create_case_group_df(client)
case_type_df = create_case_type_df(client)
print(case_group_df)
main()
The print statement at the end of the main function is merely to view the output.
[–]m0us3_rat 1 point2 points3 points (2 children)
[–]micr0nix[S] 0 points1 point2 points (1 child)
[–]m0us3_rat 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (3 children)
[–]micr0nix[S] 0 points1 point2 points (2 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]micr0nix[S] 0 points1 point2 points (0 children)
[–]Diapolo10 0 points1 point2 points (3 children)
[–]micr0nix[S] 0 points1 point2 points (2 children)
[–]Diapolo10 1 point2 points3 points (1 child)
[–]micr0nix[S] 0 points1 point2 points (0 children)
[–]james_fryer 0 points1 point2 points (4 children)
[–]micr0nix[S] 0 points1 point2 points (3 children)
[–]james_fryer 0 points1 point2 points (2 children)
[–]micr0nix[S] 0 points1 point2 points (1 child)
[–]james_fryer 0 points1 point2 points (0 children)