fix: create fresh gql client per request to avoid transport state issues

This commit is contained in:
0xallam
2026-01-17 21:54:56 -08:00
committed by Ahmed Allam
parent 2ebfd20db5
commit 7ff0e68466

View File

@@ -28,10 +28,12 @@ class ProxyManager:
"https": f"http://{host}:{CAIDO_PORT}",
}
self.auth_token = auth_token or os.getenv("CAIDO_API_TOKEN")
self.transport = RequestsHTTPTransport(
def _get_client(self) -> Client:
transport = RequestsHTTPTransport(
url=self.base_url, headers={"Authorization": f"Bearer {self.auth_token}"}
)
self.client = Client(transport=self.transport, fetch_schema_from_transport=False)
return Client(transport=transport, fetch_schema_from_transport=False)
def list_requests(
self,
@@ -90,7 +92,7 @@ class ProxyManager:
}
try:
result = self.client.execute(query, variable_values=variables)
result = self._get_client().execute(query, variable_values=variables)
data = result.get("requestsByOffset", {})
nodes = [edge["node"] for edge in data.get("edges", [])]
@@ -137,7 +139,9 @@ class ProxyManager:
return {"error": f"Invalid part '{part}'. Use 'request' or 'response'"}
try:
result = self.client.execute(gql(queries[part]), variable_values={"id": request_id})
result = self._get_client().execute(
gql(queries[part]), variable_values={"id": request_id}
)
request_data = result.get("request", {})
if not request_data:
@@ -435,7 +439,9 @@ class ProxyManager:
}
def _handle_scope_list(self) -> dict[str, Any]:
result = self.client.execute(gql("query { scopes { id name allowlist denylist indexed } }"))
result = self._get_client().execute(
gql("query { scopes { id name allowlist denylist indexed } }")
)
scopes = result.get("scopes", [])
return {"scopes": scopes, "count": len(scopes)}
@@ -443,7 +449,7 @@ class ProxyManager:
if not scope_id:
return self._handle_scope_list()
result = self.client.execute(
result = self._get_client().execute(
gql(
"query GetScope($id: ID!) { scope(id: $id) { id name allowlist denylist indexed } }"
),
@@ -472,7 +478,7 @@ class ProxyManager:
}
""")
result = self.client.execute(
result = self._get_client().execute(
mutation,
variable_values={
"input": {
@@ -512,7 +518,7 @@ class ProxyManager:
}
""")
result = self.client.execute(
result = self._get_client().execute(
mutation,
variable_values={
"id": scope_id,
@@ -535,7 +541,7 @@ class ProxyManager:
if not scope_id:
return {"error": "scope_id required for delete"}
result = self.client.execute(
result = self._get_client().execute(
gql("mutation DeleteScope($id: ID!) { deleteScope(id: $id) { deletedId } }"),
variable_values={"id": scope_id},
)
@@ -612,7 +618,7 @@ class ProxyManager:
}
}
""")
result = self.client.execute(
result = self._get_client().execute(
query, variable_values={"parentId": parent_id, "depth": depth}
)
data = result.get("sitemapDescendantEntries", {})
@@ -629,7 +635,7 @@ class ProxyManager:
}
}
""")
result = self.client.execute(query, variable_values={"scopeId": scope_id})
result = self._get_client().execute(query, variable_values={"scopeId": scope_id})
data = result.get("sitemapRootEntries", {})
all_nodes = [edge["node"] for edge in data.get("edges", [])]
@@ -736,7 +742,7 @@ class ProxyManager:
}
""")
result = self.client.execute(query, variable_values={"id": entry_id})
result = self._get_client().execute(query, variable_values={"id": entry_id})
entry = result.get("sitemapEntry")
if not entry: