From df3f5844ea334a83955efbab7f58861ae6ccd763 Mon Sep 17 00:00:00 2001 From: ngharo Date: Wed, 13 Dec 2017 00:19:14 -0600 Subject: Starting to build out cherrypy API --- .gitignore | 2 ++ data/imok.db | Bin 0 -> 12288 bytes data/sessions/.keepme | 0 server/button.py | 41 +++++++++++++++++++++++++++++++++++++++++ server/lib/database.py | 5 +++++ server/lib/uuid.py | 9 +++++++++ server/server.conf | 7 +++++++ server/server.py | 20 ++++++++++++++++++++ www/index.htm | 13 +++++++++++++ www/j.js | 2 ++ www/s.css | 3 +++ 11 files changed, 102 insertions(+) create mode 100644 .gitignore create mode 100644 data/imok.db create mode 100644 data/sessions/.keepme create mode 100644 server/button.py create mode 100644 server/lib/database.py create mode 100644 server/lib/uuid.py create mode 100644 server/server.conf create mode 100644 server/server.py create mode 100644 www/index.htm create mode 100644 www/j.js create mode 100644 www/s.css diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..24c2769 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.pyc +data/sessions/session-* diff --git a/data/imok.db b/data/imok.db new file mode 100644 index 0000000..b3b3d18 Binary files /dev/null and b/data/imok.db differ diff --git a/data/sessions/.keepme b/data/sessions/.keepme new file mode 100644 index 0000000..e69de29 diff --git a/server/button.py b/server/button.py new file mode 100644 index 0000000..8530768 --- /dev/null +++ b/server/button.py @@ -0,0 +1,41 @@ +import cherrypy +import sqlite3 +import json +from lib import uuid +from lib import database + +@cherrypy.expose +class Button(object): + STATUS_INVENTORY = 0 + STATUS_ACTIVE = 1 + STATUS_INACTIVE = 2 + STATUS_SUSPENDED = 3 + STATUS_DEAD = 4 + + def __init__(self): + self.id = None + self.status = 0 + + def GET(self, id): + if not uuid.validate(id): + return cherrypy.HTTPError(404) + + db = database.connect() + db.execute("SELECT id,status FROM buttons WHERE id = ?" , (str(id),)) + return db.fetchone() +# return json.dumps({ +# 'id': self.id, +# 'status': self.status +# }) + + def POST(self): + return 'POST BIUTTON' + + def PUT(self, id): + if uuid.validate(id): + return self.GET(id) + + raise cherrypy.HTTPError(400, 'Invalid UUID') + + def DELETE(self): + return 'DELETE BUTTON' diff --git a/server/lib/database.py b/server/lib/database.py new file mode 100644 index 0000000..d4e47e6 --- /dev/null +++ b/server/lib/database.py @@ -0,0 +1,5 @@ +import sqlite3 + +def connect(): + connection = sqlite3.connect('../data/imok.db') + return connection.cursor() diff --git a/server/lib/uuid.py b/server/lib/uuid.py new file mode 100644 index 0000000..9558f21 --- /dev/null +++ b/server/lib/uuid.py @@ -0,0 +1,9 @@ +from uuid import UUID + +def validate(uuid_to_test, version=4): + try: + uuid_obj = UUID(uuid_to_test, version=version) + except: + return False + + return str(uuid_obj) == uuid_to_test diff --git a/server/server.conf b/server/server.conf new file mode 100644 index 0000000..863cb58 --- /dev/null +++ b/server/server.conf @@ -0,0 +1,7 @@ +[/] +tools.sessions.on = True +tools.sessions.storage_class = cherrypy.lib.sessions.FileSession +tools.sessions.storage_path = "/home/ngharo/src/imOk/data/sessions" +tools.sessions.timeout = 60 +tools.sessions.secure = True +tools.sessions.httponly = True diff --git a/server/server.py b/server/server.py new file mode 100644 index 0000000..9ec12a1 --- /dev/null +++ b/server/server.py @@ -0,0 +1,20 @@ +import string +from time import time + +import cherrypy +import uuid + +class Root(object): + @cherrypy.expose + def index(self): + return 'Sup?' + +from button import Button + +cherrypy.tree.mount(Root()) +cherrypy.tree.mount(Button(), '/button', { + '/': {'request.dispatch': cherrypy.dispatch.MethodDispatcher()} +}) + +cherrypy.engine.start() +cherrypy.engine.block() diff --git a/www/index.htm b/www/index.htm new file mode 100644 index 0000000..9ba7132 --- /dev/null +++ b/www/index.htm @@ -0,0 +1,13 @@ + + + + + + +
+ +
+ + + + diff --git a/www/j.js b/www/j.js new file mode 100644 index 0000000..8aeadc5 --- /dev/null +++ b/www/j.js @@ -0,0 +1,2 @@ +function Button() { +} diff --git a/www/s.css b/www/s.css new file mode 100644 index 0000000..699a279 --- /dev/null +++ b/www/s.css @@ -0,0 +1,3 @@ +body { + margin: 0; +} -- cgit v1.2.3