You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

104 lines
2.4 KiB

#!/usr/bin/env python
"""Listen for stuff with flask!
This will listen on two endpoints, and when data is
posted to the proper one, matching a particular format,
it will save that data to a local sqlite3 db."""
from datetime import datetime
import logging
import os
from pathlib import Path
from flask import Flask, redirect, url_for, request
import json
import sqlite3
import pdb
__version__ = "0.1.0"
logging.basicConfig(level=logging.DEBUG)
dbpath = "warren.db"
app = Flask(__name__)
def parse_incoming_post(body):
"""given a body of a request, convert it from json to pydict"""
json_dict = json.loads(body)
return json_dict
def check_if_db_exists(dbpath):
"""checks to see if the db exists"""
if os.path.exists(dbpath):
return True
else:
return False
def init_new_db(dbpath):
"""when you create a DB connection with SQLite3 you
will automatically create a db file if one is not there.
This function handles explicitly creating the folder structure
and inniting the connection as required.
You can specify your own dbpath, or you can use the default dbpath."""
# TODO: write directory handling shit
# handle the DB stuff
conn = None
try:
conn = sqlite3.connect(dbpath)
cur = conn.cursor()
cur.execute('''CREATE TABLE weir (date, hostname, metadata)''')
conn.commit()
logging.DEBUG(sqlite3.version)
logging.DEBUG("Creating new weir table.")
conn.close()
except:
logging.error(logging.ERROR[0])
def write_to_db(data, dbpath):
pdb.set_trace()
if check_if_db_exists(dbpath) != True:
db = init_new_db(dbpath)
conn = sqlite3.connect(dbpath)
cur = conn.cursor()
right_now = datetime.utcnow().strftime("%Y%m%d")
sql_inputs = [(right_now, data['hostname'], data['metadata'])]
cur.executemany("INSERT INTO weir VALUES (?,?,?)", sql_inputs)
conn.commit()
logging.INFO(cur.lastrowid)
# always make sure to close db connection after you're done
conn.close()
@app.route('/')
def test():
return 'the website is up you little bitch'
@app.route('/weir',methods = ['POST'])
def weir():
""""""
try:
python_dict = request.get_json()
write_to_db(python_dict, "warren.db")
return "OK"
except:
return "Error.", 400
if __name__ == '__main__':
app.run(debug = True)