Jelajahi Sumber

rename ws web

david 7 tahun lalu
induk
melakukan
24b93e68b9
2 mengubah file dengan 73 tambahan dan 48 penghapusan
  1. 51 0
      bookworm/web-ws.py
  2. 22 48
      bookworm/web.py

+ 51 - 0
bookworm/web-ws.py

@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+import os
+import json
+from datetime import datetime
+from websocket_server import WebsocketServer
+from qmanager import qManager
+import urllib
+
+# Port on which server will run.
+PORT = 8080
+BASE_PATH='/backend/' #changes based on webserver
+last_msg = datetime.now()
+
+# client.list_objects_v2(Bucket=constants.PROCESSED_FILE_BUCKET)
+def send_status(server, client=None, force=False):
+    global last_msg
+    if client is None and not force:
+        if (datetime.now() - last_msg).total_seconds() < 2:
+            return
+        last_msg = datetime.now()
+    #status = { 'SEARCH': q.search_status(), 'BOOKS': q.books_status()}
+    status = None
+    if client is None:
+        ws.send_message_to_all(json.dumps(status))
+    else:
+        server.send_message(client, json.dumps(status))
+
+def new_client(client, server):
+    send_status(server, client)
+
+def message_received(client, server, message):
+    j = json.loads(message)
+    print(j)
+    if j['type'].upper() == 'SEARCH':
+        #q.new_search(j['book'], j['extension'])
+        pass
+
+    if j['type'].upper() == 'BOOK':
+        pass
+
+    send_status(server)
+
+def updated(force=False):
+    send_status(ws, force=force)
+
+
+if __name__ == '__main__':
+    ws = WebsocketServer(8081, host='127.0.0.1')
+    ws.set_fn_new_client(new_client)
+    ws.set_fn_message_received(message_received)
+    ws.run_forever()

+ 22 - 48
bookworm/web.py

@@ -1,50 +1,24 @@
-#!/usr/bin/env python3
-import os
-import json
-from datetime import datetime
-from websocket_server import WebsocketServer
-from qmanager import qManager
-import urllib
-
-# Port on which server will run.
-PORT = 8080
-BASE_PATH='/backend/' #changes based on webserver
-last_msg = datetime.now()
-
-def send_status(server, client=None, force=False):
-    global last_msg
-    if client is None and not force:
-        if (datetime.now() - last_msg).total_seconds() < 2:
-            return
-        last_msg = datetime.now()
-    #status = { 'SEARCH': q.search_status(), 'BOOKS': q.books_status()}
-    status = None
-    if client is None:
-        ws.send_message_to_all(json.dumps(status))
-    else:
-        server.send_message(client, json.dumps(status))
-
-def new_client(client, server):
-    send_status(server, client)
-
-def message_received(client, server, message):
-    j = json.loads(message)
-    print(j)
-    if j['type'].upper() == 'SEARCH':
-        #q.new_search(j['book'], j['extension'])
-        pass
-
-    if j['type'].upper() == 'BOOK':
-        pass
-
-    send_status(server)
-
-def updated(force=False):
-    send_status(ws, force=force)
-
+from flask import Flask, render_template, make_response
+from bookworm import s3, constants
+
+s3client = s3.client()
+app = Flask(__name__)
+
+@app.route('/')
+def index():
+    objects = s3client.list_objects_v2(Bucket=constants.PROCESSED_FILE_BUCKET)['Contents']
+    objects = sorted(objects, key=lambda x: x['LastModified'], reverse=True)
+    books = [obj['Key'] for obj in objects]
+    return render_template('kindle-index.j2', books=books)
+
+@app.route('/books/<path:book>')
+def serve_books(book):
+    obj = s3client.get_object(Bucket=constants.PROCESSED_FILE_BUCKET, Key=book)
+    data = obj['Body'].read()
+    response = make_response(data)
+    response.headers.set('Content-Disposition', 'attachment', filename=book)
+    response.headers.set('Content-Length', len(data))
+    return response
 
 if __name__ == '__main__':
-    ws = WebsocketServer(8081, host='127.0.0.1')
-    ws.set_fn_new_client(new_client)
-    ws.set_fn_message_received(message_received)
-    ws.run_forever()
+    app.run()