Added HTTP server and response

This commit is contained in:
Raelon Masters
2019-10-31 22:14:34 -04:00
parent eb59ac439a
commit ce93050b7f
8 changed files with 133 additions and 16 deletions

Binary file not shown.

View File

@@ -1,13 +1,11 @@
class Config:
"""Main System Configuration"""
def __init__(self):
self.book_path = "books/"
self.book_shelf = "data/shelf.json"
self.catalogue_db = "data/catalogue.db"
self.file_array = [
"data/catalogue.json",
self.book_shelf,
self.catalogue_db,
"conf/settings.json"
]
self.auto_scan = True
"""Main System Configuration"""
def __init__(self):
self.book_path = "/home/raelon/Books/"
self.book_shelf = "data/shelf.json"
self.catalogue_db = "data/catalogue.db"
self.file_array = [
self.book_shelf,
self.catalogue_db,
]
self.auto_scan = True

File diff suppressed because one or more lines are too long

59
lib/\ Normal file
View File

@@ -0,0 +1,59 @@
#!/usr/bin/python
import os
import zipfile
from http.server import HTTPServer, BaseHTTPRequestHandler
from config import Config
from lib.library import Catalogue
from lib.storage import Storage
config = Config()
Storage = Storage()
class InitFiles:
"""First run file creation operations"""
def __init__(self, file_array):
print("Begining creation of file structure")
for _pointer in file_array:
if not os.path.isfile(_pointer):
self.CreateFile(_pointer)
def CreateFile(self, _pointer):
"""Create the file"""
if not os.path.isdir(os.path.split(_pointer)[0]):
os.mkdir(os.path.split(_pointer)[0])
f = open(_pointer, "w+")
f.close()
class BookServer:
"""HTTP Frontend"""
def __init__(self):
self.server_address = ('', 8000)
self.handler = 'BaseHTTPRequestHandler'
def close_prompt(self):
close = input("Close Server? y/n")
if close == 'y':
self.close()
return True
else:
self.close_prompt()
def run(self):
self.httpd = HTTPServer(self.server_address, self.handler)
try:
self.httpd.serve_forever()
self.httpd.handle_request()
if self.close_prompt() == True:
pass
except Exception:
self.close()
return False
def close(self):
try:
self.httpd.server_close()
return True
except Exception:
return False

View File

@@ -1,6 +1,7 @@
#!/usr/bin/python
import os
import zipfile
from http.server import HTTPServer, BaseHTTPRequestHandler
from config import Config
from lib.library import Catalogue
from lib.storage import Storage
@@ -22,3 +23,49 @@ class InitFiles:
os.mkdir(os.path.split(_pointer)[0])
f = open(_pointer, "w+")
f.close()
class RequestHandler(BaseHTTPRequestHandler):
"""Request Handler"""
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(b'Welcome To pyShelf!')
class BookServer:
"""HTTP Frontend"""
def __init__(self):
self.server_address = ('', 8000)
self.handler = RequestHandler
def close_prompt(self):
"""Prompt to close server"""
close = input("Close Server? y/n")
if close == 'y':
self.close()
return True
else:
self.close_prompt()
def run(self):
"""Start HTTP Server"""
self.httpd = HTTPServer(self.server_address, self.handler)
try:
self.httpd.serve_forever()
self.httpd.handle_request()
if self.close_prompt() == True:
pass
except KeyboardInterrupt:
print(KeyboardInterrupt, " Closing Server")
self.close()
return False
def close(self):
"""Stop HTTP Server"""
try:
self.httpd.server_close()
return True
except Exception:
return False

View File

@@ -4,15 +4,17 @@ import sys
from config import Config
from lib.library import Catalogue
from lib.pyShelf import InitFiles
from lib.pyShelf import BookServer
sys.path.insert(1, 'lib/')
# sys.path.insert(1, 'lib/')
config = Config() # Get configuration settings
InitFiles(config.file_array) # Initialize file system
Catalogue = Catalogue() # Open the Catalogue
Server = BookServer()
# new_books = Catalogue.new_files()
Catalogue.import_books() # Filter Your books
Server.run()
# TODO Figure out a system to get books page count
# TODO Update Documentation
# TODO Requirements.txt

11
tests/test_bookserver.py Normal file
View File

@@ -0,0 +1,11 @@
import unittest
import sys
sys.path.insert(0, '../lib')
sys.path.insert(1, '../')
from pyShelf import BookServer
class BookServerTest(unittest.TestCase):
def test_bookserver(self):
server = BookServer()
self.assertTrue(server.run())

View File

@@ -1,9 +1,9 @@
import unittest
import sys
# sys.path.insert(1, '../')
from lib.library import Catalogue
Catalogue = Catalogue()
class LibraryTest(unittest.TestCase):
def test_libray_catalogue(self):