import { requireAuth } from '~/server/utils/auth' import { resolveRepo, ensureRepo } from '~/server/utils/giteaApi' export default defineEventHandler(async (event) => { const user = requireAuth(event) const canvasId = getRouterParam(event, 'canvasId') if (!canvasId) { throw createError({ statusCode: 400, message: 'Canvas ID is required' }) } // We need to resolve the repo. For now, assume it's a personal repo. // In a real scenario, we'd check the DB to see if it's a group canvas. const opts = { username: user.username } const { owner, repo } = resolveRepo(opts) const config = useRuntimeConfig() const { giteaUrl: url, giteaToken: token } = config try { const res = await $fetch(`${url}/api/v1/repos/${owner}/${repo}`, { headers: { 'Authorization': `token ${token}`, 'Accept': 'application/json' } }) return { success: true, repository: { id: res.id, name: res.name, owner: res.owner.login, url: res.html_url, cloneUrl: res.clone_url, isPrivate: res.private, type: 'personal', ownerId: user.id, createdAt: res.created_at, updatedAt: res.updated_at } } } catch (error: any) { if (error.response?.status === 404) { return { success: false, repository: null, message: 'Repository not found' } } console.error('Failed to fetch repository:', error) throw createError({ statusCode: 500, message: 'Failed to fetch repository details from Gitea' }) } })