From 86971c39d667e0e87c2d77d92e766c175b10a58a Mon Sep 17 00:00:00 2001 From: John Doty Date: Tue, 24 Sep 2024 18:51:15 -0700 Subject: [PATCH] Better styles I guess --- cry/web.py | 78 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/cry/web.py b/cry/web.py index 1717cab..420f8c0 100644 --- a/cry/web.py +++ b/cry/web.py @@ -5,12 +5,13 @@ import functools import html import http.server import io +import pathlib import time import traceback import threading import urllib.parse -from typing import Any, Callable, Concatenate, ParamSpec, Protocol +from typing import Callable, Concatenate, ParamSpec from . import database from . import feed @@ -194,7 +195,9 @@ class EventConsumer: return Event(event=None, data=None, id=None) +############################################################################### # Background Tasks +############################################################################### class BackgroundTask: @@ -335,6 +338,8 @@ class Handler(http.server.BaseHTTPRequestHandler): def do_GET(self): if self.path == "/": return self.serve_feeds() + elif self.path == "/style.css": + return self.serve_style() elif self.path == "/refresh-status": return self.serve_status() elif self.path == "/subscribe-status": @@ -433,26 +438,28 @@ class Handler(http.server.BaseHTTPRequestHandler): self.wfile.flush() def serve_status(self): - global REFRESH_TASK - + # TODO: FIX STYLES TO BE INLINE FOR SPEED I GUESS buffer = io.StringIO() buffer.write( """ + + Status - + -
-

Status

-

Status: Starting...

-

-              
Back to feeds
+ +
+

Status

+

Status: Starting...

+
+ +

+
+            
             
+ """ ) @@ -494,12 +502,7 @@ class Handler(http.server.BaseHTTPRequestHandler): Subscribed Feeds - +

Feeds

@@ -516,18 +519,16 @@ class Handler(http.server.BaseHTTPRequestHandler): ) for f in feeds: feed_title = html.escape(f.title) - if len(f.entries) > 0: - ago = f" ({f.entries[0].time_ago()})" - else: - ago = "" buffer.write(f"
") - buffer.write(f'

{feed_title}{ago}

') + buffer.write( + f'

{feed_title}

' + ) if len(f.entries) > 0: buffer.write(f"
    ") for entry in f.entries: title = html.escape(entry.title) buffer.write( - f'
  • {title} ({entry.time_ago()})
  • ' + f'
  • {title} ({entry.time_ago()})
  • ' ) buffer.write(f"
") else: @@ -555,12 +556,7 @@ class Handler(http.server.BaseHTTPRequestHandler): Choose Feed - +

Choose Feed

More than one feed was found. Choose the feed to subscribe to.

@@ -603,6 +599,22 @@ class Handler(http.server.BaseHTTPRequestHandler): self.end_headers() self.wfile.write(response) + def serve_style(self): + self.write_file( + pathlib.Path(__file__).parent / "static" / "style.css", + content_type="text/css", + ) + + def write_file(self, path: pathlib.Path, content_type: str): + with open(path, "rb") as file: + content = file.read() + + self.send_response(200) + self.send_header("content-type", content_type) + self.send_header("content-length", str(len(content))) + self.end_headers() + self.wfile.write(content) + def serve(): with http.server.ThreadingHTTPServer(("", 8000), Handler) as server: