Skip to content

Commit 3b1dc1a

Browse files
committed
added refresh token and sleep
1 parent e2217b8 commit 3b1dc1a

1 file changed

Lines changed: 35 additions & 4 deletions

File tree

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import os
22
import sys
3+
import time
34
import httpx
45
from dotenv import load_dotenv
56

@@ -37,7 +38,7 @@ def get_chain(ric, token, url) -> dict:
3738
}
3839
# Request chain data from the pricing chains endpoint.
3940
response = httpx.get(url, params=parameters, headers=headers, verify=False)
40-
response.raise_for_status()
41+
response.raise_for_status() # Raise an exception for 4xx/5xx HTTP errors
4142
return response.json()
4243

4344
def post_historical_event(rics, token, url) -> dict:
@@ -55,9 +56,23 @@ def post_historical_event(rics, token, url) -> dict:
5556

5657
# `json=payload` serializes and sends JSON in the request body.
5758
response = httpx.post(url, json=payload, headers=headers, verify=False)
58-
response.raise_for_status()
59+
response.raise_for_status() # Raise an exception for 4xx/5xx HTTP errors
5960
return response.json()
6061

62+
def post_authen_refresh(appkey, refresh_token,url) -> dict:
63+
"""Refresh the access token using the refresh token."""
64+
payload = {
65+
"grant_type": "refresh_token",
66+
"refresh_token": refresh_token,
67+
"client_id": appkey,
68+
}
69+
headers = {
70+
"Content-Type": "application/x-www-form-urlencoded"
71+
}
72+
response = httpx.post(url, data=payload, headers=headers, verify=False)
73+
response.raise_for_status() # Raise an exception for 4xx/5xx HTTP errors
74+
return response.json()
75+
6176
def post_authen_revoke(token, appkey, url) -> None:
6277
"""Revoke the access token to end the session."""
6378
headers = {
@@ -82,10 +97,10 @@ def main() -> None:
8297
base_url = os.getenv("RDP_BASE_URL") # Default to Refinitiv API base URL if not set
8398

8499
# OAuth token endpoint used to obtain access token.
85-
url = f"{base_url}/auth/oauth2/v1/token"
100+
auth_url = f"{base_url}/auth/oauth2/v1/token"
86101

87102
try:
88-
token_data = authenticate_rdp(machine_id, password, app_key, url)
103+
token_data = authenticate_rdp(machine_id, password, app_key, auth_url)
89104
print("Authentication successful! Status code: 200")
90105
# For demos only: print token to verify auth worked.
91106
print(token_data["access_token"])
@@ -126,6 +141,22 @@ def main() -> None:
126141
except httpx.RequestError as e:
127142
print(f"Request error while posting historical event data: {e}")
128143

144+
time.sleep(5) # Sleep for 5 seconds before refreshing token (for demo purposes)
145+
try:
146+
refresh_token = token_data.get("refresh_token")
147+
if refresh_token:
148+
print("Refreshing access token...")
149+
refreshed_token_data = post_authen_refresh(app_key, refresh_token, auth_url)
150+
print("Access token refreshed successfully!")
151+
print(f" New Access Token: {refreshed_token_data['access_token']}")
152+
else:
153+
print("No refresh token available. Skipping token refresh.")
154+
except httpx.HTTPStatusError as e_refresh:
155+
print(f"HTTP error while refreshing token: {e_refresh.response.status_code} - {e_refresh.response.text}")
156+
except httpx.RequestError as e_refresh:
157+
print(f"Request error while refreshing token: {e_refresh}")
158+
159+
time.sleep(5) # Sleep for 5 seconds before revoking token (for demo purposes)
129160
revoke_url = f"{base_url}/auth/oauth2/v1/revoke"
130161
try:
131162
print("Revoking access token...")

0 commit comments

Comments
 (0)