|
6 | 6 | import requests |
7 | 7 | from requests_toolbelt.multipart.encoder import MultipartEncoder |
8 | 8 | import urllib |
| 9 | +import datetime |
9 | 10 |
|
10 | 11 | """ DEVELOPER NOTES: |
11 | 12 | * This is our mocked Data Service layer for both the BB2 API |
@@ -53,11 +54,30 @@ def getAccessToken(code, state, configSettings, settings): |
53 | 54 | # and provide a header with the content type including the boundary or this call will fail |
54 | 55 | mp_encoder = MultipartEncoder(PARAMS) |
55 | 56 | myResponse = requests.post(url=BB2_ACCESS_TOKEN_URL,data=mp_encoder,headers={'content-type':mp_encoder.content_type}) |
56 | | - return myResponse |
| 57 | + response_json = myResponse.json() |
| 58 | + response_json['expires_at'] = datetime.datetime.now() + datetime.timedelta(seconds=response_json['expires_in']) |
| 59 | + return response_json |
| 60 | + |
| 61 | +def refreshAccessToken(refresh_token, configSettings, settings): |
| 62 | + BB2_ACCESS_TOKEN_URL = configSettings.get('bb2BaseUrl')+'/'+settings.version+'/o/token/' |
| 63 | + params = { |
| 64 | + 'client_id':configSettings.get('bb2ClientId'), |
| 65 | + 'grant_type': 'refresh_token', |
| 66 | + 'refresh_token': refresh_token |
| 67 | + } |
| 68 | + |
| 69 | + myResponse = requests.post(url=BB2_ACCESS_TOKEN_URL, params=params, auth=(configSettings.get('bb2ClientId'), configSettings.get('bb2ClientSecret'))) |
| 70 | + response_json = myResponse.json() |
| 71 | + response_json['expires_at'] = datetime.datetime.now() + datetime.timedelta(seconds=response_json['expires_in']) |
| 72 | + return response_json |
57 | 73 |
|
58 | 74 | # this function is used to query eob data for the authenticated Medicare.gov |
59 | 75 | # user and returned - we are then storing in a mocked DB |
60 | 76 | def getBenefitData(settings, configsSettings, query, loggedInUser): |
| 77 | + if (datetime.datetime.now() > loggedInUser.get('authToken').get('expires_at')): |
| 78 | + updated_auth_token = refreshAccessToken(loggedInUser.get('authToken').get('refresh_token'), configsSettings, settings) |
| 79 | + loggedInUser.update({'authToken':updated_auth_token}) |
| 80 | + |
61 | 81 | PARAMS = { |
62 | 82 | 'code':query.get('code'), |
63 | 83 | 'state':query.get('state') |
|
0 commit comments