import os from dotenv import load_dotenv import requests # Загрузка переменных окружения из файла .env load_dotenv() # Получение токена из переменной окружения TOKEN = os.getenv("GITEA_TOKEN2") if not TOKEN: raise ValueError("Токен не найден. Убедитесь, что он добавлен в файл .env.") # Базовые заголовки для авторизации headers = {"Authorization": f"token {TOKEN}"} # Данные пользователя owner = "stud178857" # Замените на ваш логин в Gitea repo_name = "test-repo-student" # Уникальное имя репозитория (можно изменить) # URL для API base_url = "https://git.vyatsu.ru/api/v1" # --- Функция 1: Создание репозитория --- def create_repository(): url = f"{base_url}/user/repos" data = { "name": repo_name, "description": "Это тестовый репозиторий, созданный через API", "private": False, # Публичный репозиторий } response = requests.post(url, headers=headers, json=data) if response.status_code == 201: print("Репозиторий успешно создан!") return response.json() else: print(f"Ошибка при создании репозитория: {response.status_code}") print(response.text) return None # --- Функция 2: Создание Issue --- def create_issue(repo_name): url = f"{base_url}/repos/{owner}/{repo_name}/issues" data = { "title": "Тестовый Issue", # Заголовок Issue "body": "Это тестовый Issue, созданный через API", # Описание Issue } response = requests.post(url, headers=headers, json=data) if response.status_code == 201: print("Issue успешно создан!") return response.json() else: print(f"Ошибка при создании Issue: {response.status_code}") print(response.text) return None # --- Функция 3: Создание комментария к Issue --- def create_comment(repo_name, issue_index): url = f"{base_url}/repos/{owner}/{repo_name}/issues/{issue_index}/comments" data = { "body": "Это тестовый комментарий, созданный через API", # Текст комментария } response = requests.post(url, headers=headers, json=data) if response.status_code == 201: print("Комментарий успешно создан!") return response.json() else: print(f"Ошибка при создании комментария: {response.status_code}") print(response.text) return None # --- Основная логика --- if __name__ == "__main__": try: # 1. Создаем репозиторий repo_response = create_repository() if not repo_response: raise Exception("Не удалось создать репозиторий.") # 2. Создаем Issue в новом репозитории issue_response = create_issue(repo_name) if not issue_response: raise Exception("Не удалось создать Issue.") # Извлекаем номер Issue issue_index = issue_response.get("number") if not issue_index: raise Exception("Не удалось получить номер Issue.") # 3. Добавляем комментарий к Issue comment_response = create_comment(repo_name, issue_index) if not comment_response: raise Exception("Не удалось создать комментарий.") except Exception as e: print(f"Произошла ошибка: {e}")