10
10
# Import divine-typed-requests (should be installed as a package)
11
11
from typed_requests import NetworkingManager
12
12
13
+ from .logger import get_logger
13
14
from .types import NetworksResponse , VersionResponse
14
15
16
+ logger = get_logger (__name__ )
17
+
15
18
16
19
class BaseTokenAPI :
17
20
"""
@@ -32,10 +35,13 @@ def __init__(self, api_key: str | None = None, base_url: str | None = None):
32
35
self .base_url = base_url or os .getenv ("THEGRAPH_API_ENDPOINT" , "https://token-api.thegraph.com" )
33
36
34
37
if not self .api_key :
38
+ logger .error ("API key is required but not provided" )
35
39
raise ValueError (
36
40
"API key is required. Provide it via api_key parameter or THEGRAPH_API_KEY environment variable."
37
41
)
38
42
43
+ logger .info ("Initializing TheGraph Token API client" , base_url = self .base_url )
44
+
39
45
self .manager = NetworkingManager ()
40
46
self ._headers = {
41
47
"Authorization" : f"Bearer { self .api_key } " ,
@@ -69,11 +75,13 @@ def _add_optional_params(self, params: dict[str, Any], **kwargs: Any) -> dict[st
69
75
70
76
async def __aenter__ (self ) -> "BaseTokenAPI" :
71
77
"""Async context manager entry."""
78
+ logger .debug ("Starting networking manager" )
72
79
await self .manager .startup ()
73
80
return self
74
81
75
82
async def __aexit__ (self , exc_type : Any , exc_val : Any , exc_tb : Any ) -> None :
76
83
"""Async context manager exit."""
84
+ logger .debug ("Shutting down networking manager" )
77
85
await self .manager .shutdown ()
78
86
79
87
# ===== Monitoring Methods =====
@@ -85,8 +93,11 @@ async def get_health(self) -> str:
85
93
Returns:
86
94
Health status string (should be "OK")
87
95
"""
96
+ logger .debug ("Checking API health" )
88
97
response = await self .manager .get (f"{ self .base_url } /health" , headers = self ._headers , timeout = 30 )
89
- return str (response .text )
98
+ health_status = str (response .text )
99
+ logger .info ("Health check completed" , status = health_status )
100
+ return health_status
90
101
91
102
async def get_version (self ) -> VersionResponse :
92
103
"""
@@ -95,9 +106,11 @@ async def get_version(self) -> VersionResponse:
95
106
Returns:
96
107
VersionResponse with version details
97
108
"""
109
+ logger .debug ("Fetching API version" )
98
110
response = await self .manager .get (
99
111
f"{ self .base_url } /version" , headers = self ._headers , expected_type = VersionResponse , timeout = 30
100
112
)
113
+ logger .info ("Version information retrieved" , version = response .data .get ("version" , "unknown" ))
101
114
return response .data
102
115
103
116
async def get_networks (self ) -> NetworksResponse :
@@ -107,7 +120,10 @@ async def get_networks(self) -> NetworksResponse:
107
120
Returns:
108
121
NetworksResponse with supported network information
109
122
"""
123
+ logger .debug ("Fetching supported networks" )
110
124
response = await self .manager .get (
111
125
f"{ self .base_url } /networks" , headers = self ._headers , expected_type = NetworksResponse , timeout = 30
112
126
)
127
+ networks_count = len (response .data .get ("networks" , []))
128
+ logger .info ("Networks information retrieved" , networks_count = networks_count )
113
129
return response .data
0 commit comments