22"""This provides the DuneAnalytics class implementation"""
33
44from requests import Session
5+ import logging
56
67# --------- Constants --------- #
78
8- BASE_URL = "https://dune.xyz "
9+ BASE_URL = "https://dune.com "
910GRAPH_URL = 'https://core-hsr.duneanalytics.com/v1/graphql'
1011
1112# --------- Constants --------- #
13+ logging .basicConfig (
14+ level = logging .INFO ,
15+ format = '%(asctime)s : %(levelname)s : %(funcName)-9s : %(message)s'
16+ )
17+ logger = logging .getLogger ("dune" )
1218
1319
1420class DuneAnalytics :
@@ -70,6 +76,8 @@ def login(self):
7076
7177 self .session .post (auth_url , data = form_data )
7278 self .auth_refresh = self .session .cookies .get ('auth-refresh' )
79+ if self .auth_refresh is None :
80+ logger .warning ("Login Failed!" )
7381
7482 def fetch_auth_token (self ):
7583 """
@@ -81,8 +89,10 @@ def fetch_auth_token(self):
8189 response = self .session .post (session_url )
8290 if response .status_code == 200 :
8391 self .token = response .json ().get ('token' )
92+ if self .token is None :
93+ logger .warning ("Fetching Token Failed!" )
8494 else :
85- print (response .text )
95+ logger . error (response .text )
8696
8797 def query_result_id (self , query_id ):
8898 """
@@ -93,22 +103,23 @@ def query_result_id(self, query_id):
93103 """
94104 query_data = {"operationName" : "GetResult" , "variables" : {"query_id" : query_id },
95105 "query" : "query GetResult($query_id: Int!, $parameters: [Parameter!]) "
96- "{\n get_result (query_id: $query_id, parameters: $parameters) "
97- "{\n job_id\n result_id\n __typename\n }\n }\n "
106+ "{\n get_result_v2 (query_id: $query_id, parameters: $parameters) "
107+ "{\n job_id\n result_id\n error_id \n __typename\n }\n }\n "
98108 }
99109
100110 self .session .headers .update ({'authorization' : f'Bearer { self .token } ' })
101111
102112 response = self .session .post (GRAPH_URL , json = query_data )
103113 if response .status_code == 200 :
104114 data = response .json ()
105- # print (data)
115+ logger . debug (data )
106116 if 'errors' in data :
117+ logger .error (data .get ('errors' ))
107118 return None
108- result_id = data .get ('data' ).get ('get_result ' ).get ('result_id' )
119+ result_id = data .get ('data' ).get ('get_result_v2 ' ).get ('result_id' )
109120 return result_id
110121 else :
111- print (response .text )
122+ logger . error (response .text )
112123 return None
113124
114125 def query_result (self , result_id ):
@@ -118,10 +129,12 @@ def query_result(self, result_id):
118129 :return:
119130 """
120131 query_data = {"operationName" : "FindResultDataByResult" ,
121- "variables" : {"result_id" : result_id },
122- "query" : "query FindResultDataByResult($result_id: uuid!) "
132+ "variables" : {"result_id" : result_id , "error_id" : "00000000-0000-0000-0000-000000000000" },
133+ "query" : "query FindResultDataByResult($result_id: uuid!, $error_id: uuid! ) "
123134 "{\n query_results(where: {id: {_eq: $result_id}}) "
124- "{\n id\n job_id\n error\n runtime\n generated_at\n columns\n __typename\n }"
135+ "{\n id\n job_id\n runtime\n generated_at\n columns\n __typename\n }"
136+ "\n query_errors(where: {id: {_eq: $error_id}}) {\n id\n job_id\n runtime\n "
137+ " message\n metadata\n type\n generated_at\n __typename\n }\n "
125138 "\n get_result_by_result_id(args: {want_result_id: $result_id}) {\n data\n __typename\n }\n }\n "
126139 }
127140
@@ -130,8 +143,8 @@ def query_result(self, result_id):
130143 response = self .session .post (GRAPH_URL , json = query_data )
131144 if response .status_code == 200 :
132145 data = response .json ()
133- # print (data)
146+ logger . debug (data )
134147 return data
135148 else :
136- print (response .text )
149+ logger . error (response .text )
137150 return {}
0 commit comments