fixed polar (hopefully)
This commit is contained in:
@@ -36,6 +36,7 @@ from django.contrib.auth.decorators import login_required
|
|||||||
from django.urls import reverse, reverse_lazy
|
from django.urls import reverse, reverse_lazy
|
||||||
|
|
||||||
from rowers.utils import myqueue
|
from rowers.utils import myqueue
|
||||||
|
from rowers.opaque import encoder
|
||||||
import django_rq
|
import django_rq
|
||||||
queue = django_rq.get_queue('default')
|
queue = django_rq.get_queue('default')
|
||||||
queuelow = django_rq.get_queue('low')
|
queuelow = django_rq.get_queue('low')
|
||||||
@@ -75,7 +76,7 @@ def get_token(code):
|
|||||||
|
|
||||||
post_data = {"grant_type": "authorization_code",
|
post_data = {"grant_type": "authorization_code",
|
||||||
"code": code,
|
"code": code,
|
||||||
"redirect_uri": POLAR_REDIRECT_URI,
|
#"redirect_uri": POLAR_REDIRECT_URI,
|
||||||
}
|
}
|
||||||
|
|
||||||
auth_string = '{id}:{secret}'.format(
|
auth_string = '{id}:{secret}'.format(
|
||||||
@@ -89,6 +90,10 @@ def get_token(code):
|
|||||||
headers = { 'Authorization': 'Basic %s' % base64.b64encode(
|
headers = { 'Authorization': 'Basic %s' % base64.b64encode(
|
||||||
bytes(auth_string,'utf-8')).decode('utf-8') }
|
bytes(auth_string,'utf-8')).decode('utf-8') }
|
||||||
|
|
||||||
|
dologging('polar.log','Getting token')
|
||||||
|
dologging('polar.log',post_data)
|
||||||
|
dologging('polar.log',auth_string)
|
||||||
|
|
||||||
response = requests.post("https://polarremote.com/v2/oauth2/token",
|
response = requests.post("https://polarremote.com/v2/oauth2/token",
|
||||||
data=post_data,
|
data=post_data,
|
||||||
headers=headers)
|
headers=headers)
|
||||||
@@ -96,6 +101,7 @@ def get_token(code):
|
|||||||
if response.status_code != 200: # pragma: no cover
|
if response.status_code != 200: # pragma: no cover
|
||||||
dologging('polar.log','Getting token, got:')
|
dologging('polar.log','Getting token, got:')
|
||||||
dologging('polar.log',response.status_code)
|
dologging('polar.log',response.status_code)
|
||||||
|
dologging('polar.log',response.reason)
|
||||||
dologging('polar.log',response.text)
|
dologging('polar.log',response.text)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -355,28 +361,41 @@ def register_user(user, token):
|
|||||||
s = "Token expired. Needs to refresh"
|
s = "Token expired. Needs to refresh"
|
||||||
return custom_exception_handler(401,s)
|
return custom_exception_handler(401,s)
|
||||||
|
|
||||||
authorizationstring = str('Bearer ' + token)
|
authorizationstring = 'Bearer {token}'.format(token=token)
|
||||||
headers = {
|
headers = {
|
||||||
'Content-Type': 'application/xml',
|
'Content-Type': 'application/xml',
|
||||||
'Authorization':authorizationstring,
|
'Authorization':authorizationstring,
|
||||||
'Accept': 'application/json'
|
'Accept': 'application/json'
|
||||||
}
|
}
|
||||||
|
|
||||||
params = {
|
payload = {
|
||||||
'member-id': str(user.id)
|
"member-id": encoder.encode_hex(user.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Accept': 'application/json',
|
||||||
|
'Authorization': 'Bearer {token}'.format(token=token)
|
||||||
}
|
}
|
||||||
|
|
||||||
url = baseurl+'/users'
|
|
||||||
|
|
||||||
dologging('polar.log','Registering user')
|
dologging('polar.log','Registering user')
|
||||||
response = requests.post(url,params=params,headers=headers)
|
|
||||||
|
|
||||||
if response.status_code != 200:
|
response = requests.post(
|
||||||
dologging('polar.log',url)
|
'https://www.polaraccesslink.com/v3/users',
|
||||||
|
json = payload,
|
||||||
|
headers = headers
|
||||||
|
)
|
||||||
|
#url = baseurl+'/users'
|
||||||
|
|
||||||
|
#response = requests.post(url,params=params,headers=headers)
|
||||||
|
|
||||||
|
if response.status_code not in [200,201]:
|
||||||
|
#dologging('polar.log',url)
|
||||||
dologging('polar.log',headers)
|
dologging('polar.log',headers)
|
||||||
dologging('polar.log',params)
|
dologging('polar.log',payload)
|
||||||
dologging('polar.log',response.status_code)
|
dologging('polar.log',response.status_code)
|
||||||
dologging('polar.log',reponse.body)
|
dologging('polar.log',response.content)
|
||||||
try:
|
try:
|
||||||
dologging('polar.log',response.reason)
|
dologging('polar.log',response.reason)
|
||||||
dologging('polar.log',response.text)
|
dologging('polar.log',response.text)
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ def rower_polar_authorize(request): # pragma: no cover
|
|||||||
|
|
||||||
params = {"client_id": POLAR_CLIENT_ID,
|
params = {"client_id": POLAR_CLIENT_ID,
|
||||||
"response_type": "code",
|
"response_type": "code",
|
||||||
"redirect_uri": POLAR_REDIRECT_URI,
|
#"redirect_uri": POLAR_REDIRECT_URI,
|
||||||
"state": state,
|
"state": state,
|
||||||
# "scope":"accesslink.read_all"
|
# "scope":"accesslink.read_all"
|
||||||
}
|
}
|
||||||
@@ -420,6 +420,7 @@ def rower_process_polarcallback(request):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
code = request.GET['code']
|
code = request.GET['code']
|
||||||
|
dologging('polar.log',code)
|
||||||
except MultiValueDictKeyError: # pragma: no cover
|
except MultiValueDictKeyError: # pragma: no cover
|
||||||
try:
|
try:
|
||||||
message = request.GET['error']
|
message = request.GET['error']
|
||||||
@@ -432,7 +433,21 @@ def rower_process_polarcallback(request):
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
access_token, expires_in, user_id = polarstuff.get_token(code)
|
access_token, expires_in, user_id = polarstuff.get_token(code)
|
||||||
polar_user_data = polarstuff.register_user(request.user, access_token)
|
expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
|
||||||
|
r = getrower(request.user)
|
||||||
|
r.polartoken = access_token
|
||||||
|
r.polartokenexpirydate = expirydatetime
|
||||||
|
r.polaruserid = user_id
|
||||||
|
|
||||||
|
r.save()
|
||||||
|
|
||||||
|
if user_id:
|
||||||
|
polar_user_data = polarstuff.register_user(request.user, access_token)
|
||||||
|
else:
|
||||||
|
messages.error(request,'Polar Flow Authorization Failed')
|
||||||
|
url = reverse('rower_exportsettings_view')
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
user_id2 = polar_user_data['polar-user-id']
|
user_id2 = polar_user_data['polar-user-id']
|
||||||
@@ -442,14 +457,14 @@ def rower_process_polarcallback(request):
|
|||||||
if user_id2 != user_id:
|
if user_id2 != user_id:
|
||||||
messages.error(request,'Polar User ID error')
|
messages.error(request,'Polar User ID error')
|
||||||
|
|
||||||
expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
|
#expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
|
||||||
|
|
||||||
r = getrower(request.user)
|
#r = getrower(request.user)
|
||||||
r.polartoken = access_token
|
#r.polartoken = access_token
|
||||||
r.polartokenexpirydate = expirydatetime
|
#r.polartokenexpirydate = expirydatetime
|
||||||
r.polaruserid = user_id
|
#r.polaruserid = user_id
|
||||||
|
|
||||||
r.save()
|
#r.save()
|
||||||
|
|
||||||
if user_id2 == user_id:
|
if user_id2 == user_id:
|
||||||
successmessage = "Tokens stored. Good to go. Please check your import/export settings"
|
successmessage = "Tokens stored. Good to go. Please check your import/export settings"
|
||||||
|
|||||||
Reference in New Issue
Block a user