|
import flask
|
|
from flask import request, jsonify
|
|
import psycopg2
|
|
import json
|
|
|
|
app = flask.Flask(__name__)
|
|
app.config["DEBUG"] = True
|
|
import creds
|
|
|
|
# Assign secrets to variables, should look into making this
|
|
# a function. Plan to move this to Vault from creds file.
|
|
dbhost = creds.dblogin['host']
|
|
database = creds.dblogin['db']
|
|
username = creds.dblogin['username']
|
|
password = creds.dblogin['password']
|
|
port = creds.dblogin['port']
|
|
|
|
@app.route('/', methods=['GET'])
|
|
def home():
|
|
# TODO: Look into putting all this into a template or something.
|
|
return """<h1>Public API offered by the team at Seattle Matrix</h1> <p>This \
|
|
site is a collection of api's from various public sources collected \
|
|
by the team at <a href="https://seattlematrix.org" target="_blank">SeattleMatrix.org</a>.</p> Current Data: \
|
|
</br><a href="https://api.seattlematrix.org/v1/kingcounty/covid-19/zipcode/all" target="_blank">King County, WA Covid-19 By ZipCode</a> - Current Dates: 20200810, 20200824, 20200831
|
|
"""
|
|
|
|
# A route to return all of the available records for King County COVID-19
|
|
@app.route('/v1/kingcounty/covid-19/zipcode/all', methods=['GET'])
|
|
def api_zipcode_all():
|
|
""" This route returns all the data in the king_county_covid19_zip
|
|
table. This data is currently manually updated.
|
|
"""
|
|
conn = psycopg2.connect(f"host={dbhost} dbname={database} user={username} password={password} port={port} sslmode='require'")
|
|
cur = conn.cursor()
|
|
cur.execute("select row_to_json(king_county_covid19_zip) from king_county_covid19_zip;")
|
|
rows = cur.fetchall()
|
|
# FIXME: returning row throws an error and jsonify returns double nested
|
|
# json result need to figure this out.
|
|
return jsonify(rows)
|
|
|
|
if __name__ == "__main__":
|
|
app.run(host='0.0.0.0')
|
|
|
|
# TODO: Create route for filtering on zipcode and date
|
|
# TODO: Put all above into function for covid-19 data
|
|
# TODO: Look into making a Class for db connection
|