Modularización de GKACHELE SaaS
This commit is contained in:
78
gitea_connector.py
Normal file
78
gitea_connector.py
Normal file
@@ -0,0 +1,78 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user