Newer
Older
#!/usr/bin/env python3
import os
import sys
import cgi
import json
import psycopg2
from psycopg2 import sql
pw_filename = "__POSTGRES_PASSWORD_FILE__"
connect_str = "host=__POSTGRES_HOST__ " \
"port=__POSTGRES_PORT__ " \
"dbname=__POSTGRES_DBNAME__ " \
"user=__POSTGRES_USER__"
if not os.path.isfile(pw_filename) or '__' in connect_str:
print("""Status: 500 Backend Misconfigured\n
Content-type: text/plain
Access-Control-Allow-Origin: *
Backend has not been configured properly and doesn't know how to communicate with the database.
Please contact site administrator.
""")
sys.exit(1)
with open(pw_filename, 'r') as pw_file:
password = pw_file.read().strip()
connect_str += " password={}".format(password)
form = cgi.FieldStorage()
table_name = form['layer'].value
try:
conn = psycopg2.connect(connect_str)
with conn:
with conn.cursor() as cur:
cur.execute(sql.SQL("SELECT start_time FROM {}").format(sql.Identifier(table_name)))
times = cur.fetchall()
except psycopg2.errors.DataBaseError:
print("""Status: 500 Database Error
Content-type: text/plain
Access-Control-Allow-Origin: *
Error requesting time information from database.
""")
sys.exit(1)
# postgres returned a list of tuples
times = [time_tuple[0] for time_tuple in times]
print("Content-Type: application/json")
print("Access-Control-Allow-Origin: *")
print() # blank line, end of headers
print(json.dumps(times))