|
import jwt |
|
from time import time |
|
import httpx |
|
|
|
with open("mano.pem", "r") as f: |
|
PRIVATE_KEY = f.read() |
|
APP_ID = "1109508" |
|
|
|
async def gen_token(installation_id): |
|
payload = { |
|
"iat": int(time()), |
|
"exp": int(time()) + 60, |
|
"iss": APP_ID, |
|
} |
|
jwt_token = jwt.encode(payload, PRIVATE_KEY, algorithm="RS256") |
|
url = f"https://api.github.com/app/installations/{installation_id}/access_tokens" |
|
headers = { |
|
"Authorization": f"Bearer {jwt_token}", |
|
"Accept": "application/vnd.github+json", |
|
} |
|
async with httpx.AsyncClient() as client: |
|
response = await client.post(url, headers=headers) |
|
if response.status_code == 201: |
|
return response.json().get("token") |
|
return None |
|
|