diff --git a/rowers/underarmourstuff.py b/rowers/underarmourstuff.py index 0d11281f..83733089 100644 --- a/rowers/underarmourstuff.py +++ b/rowers/underarmourstuff.py @@ -88,7 +88,7 @@ def custom_exception_handler(exc,message): return res # Refresh ST token using refresh token -def do_refresh_token(refreshtoken): +def do_refresh_token(refreshtoken,access_token): client_auth = requests.auth.HTTPBasicAuth(UNDERARMOUR_CLIENT_KEY, UNDERARMOUR_CLIENT_SECRET) post_data = {"grant_type": "refresh_token", "client_secret": UNDERARMOUR_CLIENT_SECRET, @@ -98,12 +98,13 @@ def do_refresh_token(refreshtoken): headers = {'user-agent': 'sanderroosendaal', "Api-Key":UNDERARMOUR_CLIENT_KEY, 'Accept': 'application/json', - 'Content-Type': 'application/json'} + 'Content-Type': 'application/x-www-form-urlencoded', + 'authorization': 'Bearer %s' % access_token} - url = "https://api.ua.com/v7.1/oauth2/access_token" + url = "https://api.ua.com/v7.1/oauth2/access_token/" response = requests.post(url, - data=json.dumps(post_data), + data=post_data, headers=headers) token_json = response.json() diff --git a/rowers/urls.py b/rowers/urls.py index 3f409e35..05a6ade2 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -274,6 +274,7 @@ urlpatterns = [ url(r'^me/underarmourauthorize/$',views.rower_underarmour_authorize), url(r'^me/runkeeperauthorize/$',views.rower_runkeeper_authorize), url(r'^me/sporttracksrefresh/$',views.rower_sporttracks_token_refresh), + url(r'^me/underarmourrefresh/$',views.rower_underarmour_token_refresh), url(r'^me/c2refresh/$',views.rower_c2_token_refresh), url(r'^me/favoritecharts/$',views.rower_favoritecharts_view), url(r'^email/send/$', views.sendmail), diff --git a/rowers/views.py b/rowers/views.py index 54975258..46e55611 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -1609,11 +1609,37 @@ def rower_c2_token_refresh(request): return imports_view(request,successmessage=successmessage,message=message) +# Underarmour token refresh. URL for manual refresh. Not visible to users +@login_required() +def rower_underarmour_token_refresh(request): + r = Rower.objects.get(user=request.user) + res = underarmourstuff.do_refresh_token( + r.underarmourrefreshtoken, + r.underarmourtoken + ) + access_token = res[0] + expires_in = res[1] + refresh_token = res[2] + expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) + + r = Rower.objects.get(user=request.user) + r.underarmourtoken = access_token + r.underarmourtokenexpirydate = expirydatetime + r.underarmourrefreshtoken = refresh_token + + r.save() + + successmessage = "Tokens refreshed. Good to go" + return imports_view(request,successmessage=successmessage) + + # SportTracks token refresh. URL for manual refresh. Not visible to users @login_required() def rower_sporttracks_token_refresh(request): r = Rower.objects.get(user=request.user) - res = sporttracksstuff.do_refresh_token(r.sporttracksrefreshtoken) + res = sporttracksstuff.do_refresh_token( + r.sporttracksrefreshtoken, + ) access_token = res[0] expires_in = res[1] refresh_token = res[2]