This commit is contained in:
2025-10-26 08:14:23 +04:00
parent 12b4685457
commit 5c9e07eee0
7 changed files with 213 additions and 140 deletions

View File

@@ -19,6 +19,8 @@ class MarkdownEditorApp:
"""Main application that wraps WsgiDAV and adds custom endpoints"""
def __init__(self, config_path="config.yaml"):
self.root_path = Path(__file__).parent.resolve()
os.chdir(self.root_path)
self.config = self.load_config(config_path)
self.collections = self.config.get('collections', {})
self.setup_collections()
@@ -72,21 +74,26 @@ class MarkdownEditorApp:
"""WSGI application entry point"""
path = environ.get('PATH_INFO', '')
method = environ.get('REQUEST_METHOD', '')
# Handle collection list endpoint
if path == '/fs/' and method == 'GET':
return self.handle_collections_list(environ, start_response)
# Handle static files
if path.startswith('/static/'):
return self.handle_static(environ, start_response)
# Handle root - serve index.html
# Root and index.html
if path == '/' or path == '/index.html':
return self.handle_index(environ, start_response)
# All other requests go to WebDAV
return self.webdav_app(environ, start_response)
# Static files
if path.startswith('/static/'):
return self.handle_static(environ, start_response)
# API for collections
if path == '/fs/' and method == 'GET':
return self.handle_collections_list(environ, start_response)
# All other /fs/ requests go to WebDAV
if path.startswith('/fs/'):
return self.webdav_app(environ, start_response)
# Fallback for anything else (shouldn't happen with correct linking)
start_response('404 Not Found', [('Content-Type', 'text/plain')])
return [b'Not Found']
def handle_collections_list(self, environ, start_response):
"""Return list of available collections"""
@@ -104,9 +111,9 @@ class MarkdownEditorApp:
def handle_static(self, environ, start_response):
"""Serve static files"""
path = environ.get('PATH_INFO', '')[1:] # Remove leading /
file_path = Path(path)
file_path = self.root_path / path
if not file_path.exists() or not file_path.is_file():
if not file_path.is_file():
start_response('404 Not Found', [('Content-Type', 'text/plain')])
return [b'File not found']
@@ -139,9 +146,9 @@ class MarkdownEditorApp:
def handle_index(self, environ, start_response):
"""Serve index.html"""
index_path = Path('templates/index.html')
index_path = self.root_path / 'templates' / 'index.html'
if not index_path.exists():
if not index_path.is_file():
start_response('404 Not Found', [('Content-Type', 'text/plain')])
return [b'index.html not found']