@@ -46,57 +46,43 @@ def post(api_key, host=None, path=None, gzip=False, timeout=15, **kwargs):
4646 return res
4747
4848
49- def decide (api_key , host = None , gzip = False , timeout = 15 , ** kwargs ):
50- """Post the `kwargs to the decide API endpoint"""
49+ def _process_response (res , success_message , return_json = True ):
5150 log = logging .getLogger ('posthog' )
52- res = post (api_key , host , '/decide/' , gzip , timeout , ** kwargs )
51+ if not res :
52+ raise APIError ('N/A' , 'Error when fetching PostHog API, please make sure you are using your public project token/key and not a private API key.' )
5353 if res .status_code == 200 :
54- log .debug ('Feature flags decided successfully' )
55- return res .json ()
54+ log .debug (success_message )
55+ return res .json () if return_json else res
5656 try :
5757 payload = res .json ()
5858 log .debug ('received response: %s' , payload )
5959 raise APIError (res .status_code , payload ['detail' ])
6060 except ValueError :
6161 raise APIError (res .status_code , res .text )
6262
63+ def decide (api_key , host = None , gzip = False , timeout = 15 , ** kwargs ):
64+ """Post the `kwargs to the decide API endpoint"""
65+ res = post (api_key , host , '/decide/' , gzip , timeout , ** kwargs )
66+ return _process_response (res , success_message = 'Feature flags decided successfully' )
67+
6368
6469def batch_post (api_key , host = None , gzip = False , timeout = 15 , ** kwargs ):
6570 """Post the `kwargs` to the batch API endpoint for events"""
66- log = logging .getLogger ('posthog' )
6771 res = post (api_key , host , '/batch/' , gzip , timeout , ** kwargs )
68-
69- if res .status_code == 200 :
70- log .debug ('data uploaded successfully' )
71- return res
72- try :
73- payload = res .json ()
74- log .debug ('received response: %s' , payload )
75- raise APIError (res .status_code , payload ['detail' ])
76- except ValueError :
77- raise APIError (res .status_code , res .text )
72+ return _process_response (res , success_message = 'data uploaded successfully' , return_json = False )
7873
7974
8075def get (api_key , url , host = None , timeout = None ):
81- log = logging .getLogger ('posthog' )
8276 url = remove_trailing_slash (host or DEFAULT_HOST ) + url
83- response = requests .get (
77+ res = requests .get (
8478 url ,
8579 headers = {
8680 'Authorization' : 'Bearer %s' % api_key ,
8781 'User-Agent' : USER_AGENT
8882 },
8983 timeout = timeout
9084 )
91- if response .status_code == 200 :
92- return response .json ()
93- try :
94- payload = response .json ()
95- log .debug ('received response: %s' , payload )
96- raise APIError (response .status_code , payload ['detail' ])
97- except ValueError :
98- raise APIError (response .status_code , response .text )
99-
85+ return _process_response (res , success_message = f'GET { url } completed successfully' )
10086
10187class APIError (Exception ):
10288
0 commit comments