Private
Public Access
1
0

creating auth url, not implemented callback yet

This commit is contained in:
2024-12-07 16:38:58 +01:00
parent 0a17a310fe
commit 931bab29ea
4 changed files with 114 additions and 0 deletions

View File

@@ -5,6 +5,7 @@ from .sporttracks import SportTracksIntegration
from .rp3 import RP3Integration from .rp3 import RP3Integration
from .trainingpeaks import TPIntegration from .trainingpeaks import TPIntegration
from .polar import PolarIntegration from .polar import PolarIntegration
from .intervals import IntervalsIntegration
importsources = { importsources = {
'c2': C2Integration, 'c2': C2Integration,
@@ -15,5 +16,6 @@ importsources = {
'tp':TPIntegration, 'tp':TPIntegration,
'rp3':RP3Integration, 'rp3':RP3Integration,
'polar': PolarIntegration, 'polar': PolarIntegration,
'intervals': IntervalsIntegration,
} }

View File

@@ -0,0 +1,92 @@
from .integrations import SyncIntegration, NoTokenError, create_or_update_syncrecord, get_known_ids
from rowers.models import Rower, User, Workout, TombStone
from rowingdata import rowingdata
from rowers import mytypes
from rowers.rower_rules import is_workout_user, ispromember
from rowers.utils import myqueue, dologging, custom_exception_handler
import urllib
import gzip
import requests
import arrow
import datetime
import os
from uuid import uuid4
from django.utils import timezone
from datetime import timedelta
from rowsandall_app.settings import (
INTERVALS_CLIENT_ID, INTERVALS_REDIRECT_URI, INTERVALS_CLIENT_SECRET, SITE_URL
)
import django_rq
queue = django_rq.get_queue('default', default_timeout=3600)
queuelow = django_rq.get_queue('low', default_timeout=3600)
queuehigh = django_rq.get_queue('high', default_timeout=3600)
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
intervals_authorize_url = 'https://intervals.icu/oauth/authorize?'
intervals_token_url = 'https://intervals.icu/oauth/token'
class IntervalsIntegration(SyncIntegration):
def __init__(self, *args, **kwargs):
super(IntervalsIntegration, self).__init__(*args, **kwargs)
self.oauth_data = {
'client_id': INTERVALS_CLIENT_ID,
'client_secret': INTERVALS_CLIENT_SECRET,
'redirect_uri': INTERVALS_REDIRECT_URI,
'authorization_uri': intervals_authorize_url,
'content_type': 'application/json',
'tokenname': 'intervals_token',
'expirydatename': 'intervals_exp',
'refreshtokenname': 'intervals_r',
'bearer_auth': True,
'base_uri': 'https://intervals.icu/api/v1/',
'grant_type': 'refresh_token',
'headers': headers,
'scope': 'ACTIVITY:WRITE'
}
def get_token(self, code, *args, **kwargs):
return super(IntervalsIntegration, self).get_token(code, *args, **kwargs)
def get_name(self):
return 'Intervals'
def get_shortname(self):
return 'intervals'
def open(self, *args, **kwargs):
dologging('intervals.icu.log', "Getting token for user {id}".format(id=self.rower.id))
token = super(IntervalsIntegration).open(*args, **kwargs)
return token
def createworkoutdata(self, w, *args, **kwargs) -> str:
return NotImplemented
def workout_export(self, workout, *args, **kwargs) -> str:
return NotImplemented
def get_workouts(workout, *args, **kwargs) -> int:
return NotImplemented
def get_workout(self, id, *args, **kwargs) -> int:
return NotImplemented
def get_workout_list(self, *args, **kwargs) -> list:
return NotImplemented
def make_authorization_url(self, *args, **kwargs):
return super(IntervalsIntegration, self).make_authorization_url(*args, **kwargs)
def token_refresh(self, *args, **kwargs):
return super(IntervalsIntegration, self).token_refresh(*args, **kwargs)

View File

@@ -1240,6 +1240,11 @@ class Rower(models.Model):
strava_auto_import = models.BooleanField(default=False) strava_auto_import = models.BooleanField(default=False)
strava_auto_delete = models.BooleanField(default=False) strava_auto_delete = models.BooleanField(default=False)
intervals_token = models.CharField(
default='', max_length=200, blank=True, null=True)
intervals_exp = models.DateTimeField(blank=True, null=True)
intervals_r = models.CharField(default='', max_length=200, blank=True, null=True)
privacychoices = ( privacychoices = (
('visible', 'Visible'), ('visible', 'Visible'),
('hidden', 'Hidden'), ('hidden', 'Hidden'),

View File

@@ -296,6 +296,21 @@ C2_CLIENT_SECRET = CFG['c2_client_secret']
C2_REDIRECT_URI = CFG['c2_callback'] C2_REDIRECT_URI = CFG['c2_callback']
# C2_REDIRECT_URI = "http://localhost:8000/call_back" # C2_REDIRECT_URI = "http://localhost:8000/call_back"
# Intervals.icu
try:
INTERVALS_CLIENT_ID = CFG['intervals_client_id']
except KeyError:
INTERVALS_CLIENT_ID = '0'
try:
INTERVALS_CLIENT_SECRET = CFG['intervals_client_secret']
except KeyError:
INTERVALS_CLIENT_SECRET = 'aa'
try:
INTERVALS_REDIRECT_URI = CFG['intervals_callback']
except KeyError:
INTERVALS_REDIRECT_URI = 'http://localhost:8000/intervals_icu_callback'
# Strava # Strava
STRAVA_CLIENT_ID = CFG['strava_client_id'] STRAVA_CLIENT_ID = CFG['strava_client_id']