Skip to content

feat: add RSS feed for status updates#7

Merged
jmlweb merged 1 commit intomainfrom
feat/rss-feed
Jan 29, 2026
Merged

feat: add RSS feed for status updates#7
jmlweb merged 1 commit intomainfrom
feat/rss-feed

Conversation

@jmlweb
Copy link
Copy Markdown
Owner

@jmlweb jmlweb commented Jan 29, 2026

Summary

Adds RSS 2.0 feed endpoint (/rss.xml) for status updates, allowing users to subscribe via RSS readers.

Changes

  • New module: webstatuspi/_rss.py - RSS 2.0 XML generation using stdlib xml.etree
  • Config: Added RssConfig to config.py with options:
    • enabled: Enable/disable RSS feed (default: true)
    • title: Feed title
    • description: Feed description
    • max_items: Maximum items in feed (default: 20)
    • link: Base URL for status page
  • API: Added /rss.xml endpoint in api.py
  • Tests: 21 new tests in tests/test_rss.py
  • Docs: Updated FEATURE_SUGGESTIONS.md marking RSS as implemented

Configuration Example

api:
  rss:
    enabled: true
    title: "WebStatusπ Status Feed"
    max_items: 20
    link: "https://status.example.com"

Feed Features

  • RSS 2.0 compliant XML
  • Items sorted by most recent check
  • Each item includes: status (UP/DOWN), HTTP code, response time, uptime %, SSL warnings
  • Unique GUIDs for each status entry
  • Proper caching headers (60s)

- Add /rss.xml endpoint returning RSS 2.0 feed
- New webstatuspi/_rss.py module with XML generation using stdlib
- Add RssConfig to config.py with title, description, max_items, link options
- Add comprehensive tests in tests/test_rss.py (21 tests)
- Update FEATURE_SUGGESTIONS.md marking RSS as implemented

Configuration example:
```yaml
api:
  rss:
    enabled: true
    title: "WebStatusπ Status Feed"
    max_items: 20
```
@jmlweb jmlweb merged commit 23abcd1 into main Jan 29, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant