8 Commits
Author SHA1 Message Date
mahdium bc2b38a3b0 feat: add Docker support and CI workflow
- Created a Dockerfile to build and deploy the application using a multi-stage build process.
- Added a GitHub Actions workflow to automatically build and publish the Docker image to GitHub Container Registry on pushes to the main branch.
- Updated go.mod and go.sum to reflect dependency upgrades and changes.
- Modified the RSS generator to extend the photo expiration time from 10 minutes to 12 hours.
- Updated rate limiter configuration to allow for environment variable customization.
2026-05-08 13:54:04 +03:30
mahdium 940cfa8626 feat: implement image HMAC generator and integrate into image handling and RSS generation 2026-03-13 23:34:59 +03:30
mahdium e210acb810 feat: add BaseURL config, RSS image enclosure, and separate rate limiters
- Load and validate BASE_URL, store in Config
- RSSGenerator now receives Config; adds <enclosure> for photo messages using BaseURL
- RateLimiter tracks feed and image limiters; provide FeedRateLimit and ImageRateLimit middleware
- Update routes to use the new middlewares and inject Config into RSSGenerator
2026-03-13 22:11:01 +03:30
mahdium 7aab3f55ed feat: add ImageHandler and ImageService for image retrieval from channels 2026-03-13 17:18:08 +03:30
mahdium 71a2c756c2 feat: add feed cache implementation and integrate with channel handler 2026-03-11 18:13:22 +03:30
mahdiumandQwen-Coder 5a37903a72 fix: rate limiter ticker leak and context cancellation bug
- Stop ticker and signal goroutine exit in RegisterCleanup OnStop hook
- Call cancel() explicitly after AuthStatus instead of defer to prevent premature context cancellation
- Use consistent logger parameter in OnStop hook

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 16:18:18 +03:30
mahdium a053d577ef feat: implement rate‑limiter cleanup task and register it in the FX lifecycle. 2026-03-11 16:05:21 +03:30
mahdium ee5534a2ce feat: add rate limiting to feed endpoint and update route paths
- Implement per-client rate limiting (5 requests per 3 seconds)
- Change /channel/:id routes to /feed/:id for consistency
- Add data/ to .gitignore
- Include RateLimit middleware on GET /feed/:id endpoint
2026-03-11 00:36:40 +03:30