Files
gkachele-saas/gitea_connector.py
2026-01-17 11:40:17 +01:00

79 lines
2.8 KiB
Python
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import requests
import json
import os
# CONFIGURACIÓN
# Cuando tengas el token, ponlo aquí o en variable de entorno
GITEA_URL = "http://git.gk-saas.komkida.duckdns.org" # Interno: "http://localhost:3000" si corre en la misma Pi
GITEA_TOKEN = "20e7a102677c5cd7e2e0a241e9ea1cf6364db643"
def create_org(org_name):
"""Crea una organización para un cliente (ej. 'cliente-123')"""
headers = {
'Authorization': f'token {GITEA_TOKEN}',
'Content-Type': 'application/json'
}
data = {
"username": org_name,
"visibility": "private",
"description": f"Organización para {org_name}",
"website": ""
}
response = requests.post(f"{GITEA_URL}/api/v1/orgs", headers=headers, json=data)
if response.status_code == 201:
print(f"✅ Organización '{org_name}' creada.")
return True
elif response.status_code == 422:
print(f" La organización '{org_name}' ya existe.")
return True
else:
print(f"❌ Error al crear organización: {response.text}")
return False
def create_repo(org_name, repo_name, description="Sitio generado por GKACHELE SaaS"):
"""Crea un repositorio dentro de una organización"""
headers = {
'Authorization': f'token {GITEA_TOKEN}',
'Content-Type': 'application/json'
}
data = {
"name": repo_name,
"description": description,
"private": True,
"auto_init": True, # Crea README y branch main automáticamente
"gitignores": "Python",
"license": "MIT",
"default_branch": "main"
}
# Endpoint para crear repo en organización
url = f"{GITEA_URL}/api/v1/orgs/{org_name}/repos"
response = requests.post(url, headers=headers, json=data)
if response.status_code == 201:
repo_data = response.json()
print(f"✅ Repositorio '{org_name}/{repo_name}' creado exitosamente.")
print(f"🔗 Clone URL: {repo_data['clone_url']}")
return repo_data
elif response.status_code == 409:
print(f" El repositorio '{repo_name}' ya existe en '{org_name}'.")
# Intentar obtener el repo existente
# response = requests.get(f"{GITEA_URL}/api/v1/repos/{org_name}/{repo_name}", headers=headers)
return None
else:
print(f"❌ Error al crear repositorio: {response.text}")
return None
if __name__ == "__main__":
print("--- 🧪 Test de Conexión con Gitea ---")
if GITEA_TOKEN == "TU_TOKEN_DE_GITEA_AQUI":
print("⚠️ Primero genera un token en Gitea (Settings -> Applications -> Generate Token)")
else:
# Prueba
CLIENTE_TEST = "cliente-prueba-1"
create_org(CLIENTE_TEST)
create_repo(CLIENTE_TEST, "sitio-web-1")