Api docs under /docs/
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
from couchpotato.api import api_docs, api_docs_missing
|
||||||
from couchpotato.core.auth import requires_auth
|
from couchpotato.core.auth import requires_auth
|
||||||
from couchpotato.core.event import fireEvent
|
from couchpotato.core.event import fireEvent
|
||||||
from couchpotato.core.logger import CPLog
|
from couchpotato.core.logger import CPLog
|
||||||
@@ -35,6 +36,21 @@ def addView(route, func, static = False):
|
|||||||
def index():
|
def index():
|
||||||
return render_template('index.html', sep = os.sep, fireEvent = fireEvent, env = Env)
|
return render_template('index.html', sep = os.sep, fireEvent = fireEvent, env = Env)
|
||||||
|
|
||||||
|
""" Api view """
|
||||||
|
@web.route('docs/')
|
||||||
|
@requires_auth
|
||||||
|
def apiDocs():
|
||||||
|
from couchpotato import app
|
||||||
|
routes = []
|
||||||
|
for route, x in sorted(app.view_functions.iteritems()):
|
||||||
|
if route[0:4] == 'api.':
|
||||||
|
routes += [route[4:].replace('::', '.')]
|
||||||
|
|
||||||
|
if api_docs.get(''):
|
||||||
|
del api_docs['']
|
||||||
|
del api_docs_missing['']
|
||||||
|
return render_template('api.html', routes = sorted(routes), api_docs = api_docs, api_docs_missing = sorted(api_docs_missing))
|
||||||
|
|
||||||
@app.errorhandler(404)
|
@app.errorhandler(404)
|
||||||
def page_not_found(error):
|
def page_not_found(error):
|
||||||
index_url = url_for('web.index')
|
index_url = url_for('web.index')
|
||||||
|
|||||||
+4
-12
@@ -1,5 +1,7 @@
|
|||||||
from flask.blueprints import Blueprint
|
from flask.blueprints import Blueprint
|
||||||
|
from flask.helpers import url_for
|
||||||
from flask.templating import render_template
|
from flask.templating import render_template
|
||||||
|
from werkzeug.utils import redirect
|
||||||
|
|
||||||
api = Blueprint('api', __name__)
|
api = Blueprint('api', __name__)
|
||||||
api_docs = {}
|
api_docs = {}
|
||||||
@@ -14,17 +16,7 @@ def addApiView(route, func, static = False, docs = None):
|
|||||||
|
|
||||||
""" Api view """
|
""" Api view """
|
||||||
def index():
|
def index():
|
||||||
|
index_url = url_for('web.index')
|
||||||
from couchpotato import app
|
return redirect(index_url + 'docs/')
|
||||||
routes = []
|
|
||||||
for route, x in sorted(app.view_functions.iteritems()):
|
|
||||||
if route[0:4] == 'api.':
|
|
||||||
routes += [route[4:].replace('::', '.')]
|
|
||||||
|
|
||||||
if api_docs.get(''):
|
|
||||||
del api_docs['']
|
|
||||||
del api_docs_missing['']
|
|
||||||
return render_template('api.html', routes = sorted(routes), api_docs = api_docs, api_docs_missing = sorted(api_docs_missing))
|
|
||||||
|
|
||||||
addApiView('', index)
|
addApiView('', index)
|
||||||
addApiView('default', index)
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ config = [{
|
|||||||
'name': 'api_key',
|
'name': 'api_key',
|
||||||
'default': uuid4().hex,
|
'default': uuid4().hex,
|
||||||
'readonly': 1,
|
'readonly': 1,
|
||||||
'description': "This is top-secret! Don't share this!",
|
'description': 'Let 3rd party app do stuff. <a target="_self" href="/docs/">Docs</a>',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'debug',
|
'name': 'debug',
|
||||||
|
|||||||
Reference in New Issue
Block a user