feat: handle GitHub API rate limits gracefully#40
Closed
Ai-chan-0411 wants to merge 2 commits intoO2sa:mainfrom
Closed
feat: handle GitHub API rate limits gracefully#40Ai-chan-0411 wants to merge 2 commits intoO2sa:mainfrom
Ai-chan-0411 wants to merge 2 commits intoO2sa:mainfrom
Conversation
Add in-memory cache with 5-minute TTL for GitHub GraphQL responses. Duplicate requests for the same username are served from cache, reducing API calls and improving response times. - Add lib/cache.ts with generic get/set/stats helpers - Wrap fetchGitHubUserData with cache lookup - Add Cache-Control header to compare API response Closes O2sa#33
When the GitHub API returns 403/429 (rate limited), the app now: 1. Falls back to stale cached data if available 2. Returns a friendly 429 response with Retry-After header when no cached data exists Adds RateLimitError class and stale cache lookup helper. Closes O2sa#32
|
@aoi-dev-0411 is attempting to deploy a commit to the osama's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
Thank you for the pull request! ✅ A maintainer will review this soon. Please be patient while we take a look. 🙌 |
Contributor
Author
|
Closing this PR as there has been no maintainer feedback for several weeks. Thank you for the opportunity to contribute! Feel free to reopen if you would like these changes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #32
Gracefully handles GitHub API rate limit errors (403/429) with fallback to stale cached data and user-friendly error responses.
Changes
lib/cache.ts— AddgetStale()to retrieve expired cache entries as fallbacklib/github.ts— Catch rate limit errors, serve stale data when available, throwRateLimitErrorotherwiseapp/api/compare/route.ts— Return 429 status withRetry-Afterheader and friendly messageHow it works
retryAfterseconds until resetNote
Builds on the caching foundation from #33 (PR #39).
Test plan