Skip to content

Commit ed286ed

Browse files
author
ExpDev07
committed
add sources endpoint and improve datasource middleware
1 parent 22e5920 commit ed286ed

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

app/routes/__init__.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
from flask import Blueprint, redirect, request, current_app as app
1+
from flask import Blueprint, redirect, request, abort, current_app as app
22
from ..data import data_source
33

44
# Follow the import order to avoid circular dependency
55
api_v1 = Blueprint('api_v1', __name__, url_prefix='')
66
api_v2 = Blueprint('api_v2', __name__, url_prefix='/v2')
77

88
# API version 2.
9-
from .v2 import locations, latest
9+
from .v2 import locations, latest, sources
1010

1111
# API version 1.
1212
from .v1 import confirmed, deaths, recovered, all
@@ -23,8 +23,12 @@ def datasource():
2323
Attaches the datasource to the request.
2424
"""
2525
# Retrieve the datas ource from query param.
26-
source = request.args.get('source', type=str, default='jhu')
26+
source = data_source(request.args.get('source', type=str, default='jhu'))
27+
28+
# Abort with 404 if source cannot be found.
29+
if not source:
30+
return abort(404, description='The provided data-source was not found.')
2731

2832
# Attach source to request and return it.
29-
request.source = data_source(source)
33+
request.source = source
3034
pass

app/routes/v2/sources.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from flask import jsonify
2+
from ...data import data_sources
3+
from ...routes import api_v2 as api
4+
5+
@api.route('/sources')
6+
def sources():
7+
"""
8+
Retrieves a list of data-sources that are availble to use.
9+
"""
10+
return jsonify({
11+
'sources': list(data_sources.keys())
12+
})

0 commit comments

Comments
 (0)