hotfix(backend): Remove GH header token middleware (#6269)

This commit is contained in:
sp.wack 2025-01-14 21:07:13 +04:00 committed by GitHub
parent 4da812c781
commit 04382b2b19
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 24 deletions

View File

@ -11,7 +11,6 @@ from fastapi import (
import openhands.agenthub # noqa F401 (we import this to get the agents registered)
from openhands.server.middleware import (
AttachConversationMiddleware,
GitHubTokenMiddleware,
InMemoryRateLimiter,
LocalhostCORSMiddleware,
NoCacheMiddleware,
@ -45,7 +44,6 @@ app.add_middleware(
allow_headers=['*'],
)
app.add_middleware(GitHubTokenMiddleware)
app.add_middleware(NoCacheMiddleware)
app.add_middleware(
RateLimitMiddleware, rate_limiter=InMemoryRateLimiter(requests=10, seconds=1)

View File

@ -166,16 +166,3 @@ class AttachConversationMiddleware(SessionMiddlewareInterface):
await self._detach_session(request)
return response
class GitHubTokenMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
if request.url.path.startswith('/api/github'):
github_token = request.headers.get('X-GitHub-Token')
if not github_token:
return JSONResponse(
status_code=400,
content={'error': 'Missing X-GitHub-Token header'},
)
request.state.github_token = github_token
return await call_next(request)

View File

@ -1,5 +1,5 @@
import requests
from fastapi import APIRouter, HTTPException, Request
from fastapi import APIRouter, Depends, HTTPException, Request
from fastapi.responses import JSONResponse
from openhands.server.shared import openhands_config
@ -8,13 +8,23 @@ from openhands.utils.async_utils import call_sync_from_async
app = APIRouter(prefix='/api/github')
def require_github_token(request: Request):
github_token = request.headers.get('X-GitHub-Token')
if not github_token:
raise HTTPException(
status_code=400,
detail='Missing X-GitHub-Token header',
)
return github_token
@app.get('/repositories')
async def get_github_repositories(
request: Request,
page: int = 1,
per_page: int = 10,
sort: str = 'pushed',
installation_id: int | None = None,
github_token: str = Depends(require_github_token),
):
openhands_config.verify_github_repo_list(installation_id)
@ -33,7 +43,7 @@ async def get_github_repositories(
params['sort'] = sort
# Set the authorization header with the GitHub token
headers = generate_github_headers(request.state.github_token)
headers = generate_github_headers(github_token)
# Fetch repositories from GitHub
try:
@ -59,8 +69,8 @@ async def get_github_repositories(
@app.get('/user')
async def get_github_user(request: Request):
headers = generate_github_headers(request.state.github_token)
async def get_github_user(github_token: str = Depends(require_github_token)):
headers = generate_github_headers(github_token)
try:
response = await call_sync_from_async(
requests.get, 'https://api.github.com/user', headers=headers
@ -79,8 +89,10 @@ async def get_github_user(request: Request):
@app.get('/installations')
async def get_github_installation_ids(request: Request):
headers = generate_github_headers(request.state.github_token)
async def get_github_installation_ids(
github_token: str = Depends(require_github_token),
):
headers = generate_github_headers(github_token)
try:
response = await call_sync_from_async(
requests.get, 'https://api.github.com/user/installations', headers=headers
@ -102,13 +114,13 @@ async def get_github_installation_ids(request: Request):
@app.get('/search/repositories')
async def search_github_repositories(
request: Request,
query: str,
per_page: int = 5,
sort: str = 'stars',
order: str = 'desc',
github_token: str = Depends(require_github_token),
):
headers = generate_github_headers(request.state.github_token)
headers = generate_github_headers(github_token)
params = {
'q': query,
'per_page': per_page,