Spaces:
Configuration error
Configuration error
import sys | |
import logging | |
import time | |
import base64 | |
import jwt | |
import httpx | |
from cryptography.hazmat.primitives.serialization import load_der_private_key | |
logging.basicConfig(stream=sys.stdout, level=logging.INFO) | |
logger = logging.getLogger("Code Review Assistant") | |
BASE_GITHUB_URL = "https://api.github.com" | |
class JWTGenerator: | |
def __init__(self, app_id, private_key): | |
self.app_id = app_id | |
self.private_key = private_key | |
def generate_jwt(self): | |
payload = { | |
"iat": int(time.time()), | |
"exp": int(time.time()) + (10 * 60), | |
"iss": self.app_id, | |
} | |
if self.private_key: | |
private_key_cleaned = self.private_key.replace("-----BEGIN RSA PRIVATE KEY-----", "").replace("\n", "").replace("-----END RSA PRIVATE KEY-----", "") | |
secret = base64.b64decode(private_key_cleaned) | |
private_rsa_key = load_der_private_key(secret, password=None) | |
jwt_token = jwt.encode(payload, private_rsa_key, algorithm="RS256") | |
return jwt_token | |
raise ValueError("PRIVATE_KEY not found.") | |
async def get_installation_access_token(jwt, installation_id): | |
url = f"{BASE_GITHUB_URL}/app/installations/{installation_id}/access_tokens" | |
headers = { | |
"Authorization": f"Bearer {jwt}", | |
"Accept": "application/vnd.github.v3+json", | |
} | |
async with httpx.AsyncClient() as client: | |
response = await client.post(url, headers=headers) | |
return response.json()["token"] | |
def get_diff_url(pr): | |
"""GitHub 302s to this URL.""" | |
original_url = pr.get("url") | |
parts = original_url.split("/") | |
owner, repo, pr_number = parts[-4], parts[-3], parts[-1] | |
return f"https://patch-diff.githubusercontent.com/raw/{owner}/{repo}/pull/{pr_number}.diff" | |
# return f"{BASE_GITHUB_URL}/repos/{owner}/{repo}/pulls/{pr_number}" |