feat: Implement Micropub endpoint for creating posts (Phase 3)
Following design in /docs/design/micropub-endpoint-design.md and /docs/decisions/ADR-028-micropub-implementation.md Micropub Module (starpunk/micropub.py): - Property normalization for form-encoded and JSON requests - Content/title/tags extraction from Micropub properties - Bearer token extraction from Authorization header or form - Create action handler integrating with notes.py CRUD - Query endpoints (config, source, syndicate-to) - OAuth 2.0 compliant error responses Micropub Route (starpunk/routes/micropub.py): - Main /micropub endpoint handling GET and POST - Bearer token authentication and validation - Content-type handling (form-encoded and JSON) - Action routing (create supported, update/delete return V1 error) - Comprehensive error handling Integration: - Registered micropub blueprint in routes/__init__.py - Maps Micropub properties to StarPunk note format - Returns 201 Created with Location header per spec - V1 limitations clearly documented (no update/delete) All 23 Phase 3 tests pass Total: 77 tests pass (21 Phase 1 + 33 Phase 2 + 23 Phase 3) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,7 @@ admin, auth, and (conditionally) dev auth routes.
|
||||
|
||||
from flask import Flask
|
||||
|
||||
from starpunk.routes import admin, auth, public
|
||||
from starpunk.routes import admin, auth, micropub, public
|
||||
|
||||
|
||||
def register_routes(app: Flask) -> None:
|
||||
@@ -19,7 +19,8 @@ def register_routes(app: Flask) -> None:
|
||||
|
||||
Registers:
|
||||
- Public routes (homepage, note permalinks)
|
||||
- Auth routes (login, callback, logout)
|
||||
- Auth routes (login, callback, logout, token, authorization)
|
||||
- Micropub routes (Micropub API endpoint)
|
||||
- Admin routes (dashboard, note management)
|
||||
- Dev auth routes (if DEV_MODE enabled)
|
||||
"""
|
||||
@@ -29,6 +30,9 @@ def register_routes(app: Flask) -> None:
|
||||
# Register auth routes
|
||||
app.register_blueprint(auth.bp)
|
||||
|
||||
# Register Micropub routes
|
||||
app.register_blueprint(micropub.bp)
|
||||
|
||||
# Register admin routes
|
||||
app.register_blueprint(admin.bp)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user