Skip to content
Snippets Groups Projects
Commit 6ce4729f authored by Anton Sarukhanov's avatar Anton Sarukhanov
Browse files

Cleanup

parent 57ef6dd3
No related branches found
No related tags found
No related merge requests found
...@@ -10,5 +10,5 @@ dynamic/interactive parts of [ant.sr](https://ant.sr). ...@@ -10,5 +10,5 @@ dynamic/interactive parts of [ant.sr](https://ant.sr).
# Development Server # Development Server
* `flask run` * `./run.py`
* Visit [localhost:5000](http://127.0.0.1:5000). * Visit [localhost:5000](http://127.0.0.1:5000).
File added
import json
from strava import Strava
class Api():
"""API interfaces"""
def __init__(self, api_name):
def strava():
"""Strava API - get my recent rides"""
s = Strava()
return json.dumps(s.get_athlete())
functions = {name:f for (name, f) in locals() if l != 'self'}
return functions[api_name]
...@@ -2,8 +2,9 @@ from flask import Flask, redirect, render_template, url_for ...@@ -2,8 +2,9 @@ from flask import Flask, redirect, render_template, url_for
from strava import Strava from strava import Strava
from decorators import admin from decorators import admin
app = Flask(__name__) app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config') app.config.from_object('config')
app.config.from_pyfile('config.py')
@app.route('/') @app.route('/')
def index(): def index():
...@@ -14,6 +15,11 @@ def index(): ...@@ -14,6 +15,11 @@ def index():
def strava_auth(): def strava_auth():
return Strava.authorize() return Strava.authorize()
@app.route('/api/<api_name>')
def api(api_name):
from api import Api
return Api(api_name)
@app.context_processor @app.context_processor
def cp_is_admin(): def cp_is_admin():
from util import is_admin from util import is_admin
......
File moved
from flask import request, redirect from flask import request, redirect, current_app
from stravalib.client import Client from stravalib.client import Client
from requests.exceptions import HTTPError from requests.exceptions import HTTPError
import config
class Strava(): class Strava():
@classmethod @classmethod
...@@ -14,7 +13,7 @@ class Strava(): ...@@ -14,7 +13,7 @@ class Strava():
return strava.get_athlete().email return strava.get_athlete().email
except (HTTPError, AttributeError): except (HTTPError, AttributeError):
return False return False
@classmethod @classmethod
def authorize(cls, code = None): def authorize(cls, code = None):
"""Redirect to Strava to get an access token.""" """Redirect to Strava to get an access token."""
...@@ -24,14 +23,14 @@ class Strava(): ...@@ -24,14 +23,14 @@ class Strava():
source_url = request.referrer source_url = request.referrer
authorized_url = request.url authorized_url = request.url
authorize_url = strava.authorization_url( authorize_url = strava.authorization_url(
client_id=config.STRAVA_APP_ID, redirect_uri=authorized_url, state=source_url) client_id=current_app.config['STRAVA_APP_ID'], redirect_uri=authorized_url, state=source_url)
return redirect(authorize_url) return redirect(authorize_url)
else: else:
source_url = request.args.get('state', None) source_url = request.args.get('state', None)
strava = Client() strava = Client()
access_token = strava.exchange_code_for_token( access_token = strava.exchange_code_for_token(
client_id=config.STRAVA_APP_ID, client_id=current_app.config['STRAVA_APP_ID'],
client_secret=config.STRAVA_APP_SECRET, client_secret=current_app.config['STRAVA_APP_SECRET'],
code=code) code=code)
strava.access_token = access_token strava.access_token = access_token
# TODO: store the access token # TODO: store the access token
......
File moved
File moved
from flask import request from flask import request, current_app
import config
def is_admin(): def is_admin():
try: try:
admin_ip = config.ADMIN_IP admin_ip = current_app.config.ADMIN_IP
except AttributeError: except AttributeError:
admin_ip = '127.0.0.1' admin_ip = '127.0.0.1'
return request.remote_addr == admin_ip return request.remote_addr == admin_ip
STRAVA_APP_ID = '12345'
STRAVA_APP_SECRET = 'your-strava-app-secret'
ADMIN_IP = '127.0.0.1'
run.py 0 → 100644
#!/usr/bin/env python
from api.app import app
app.run()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment