import type { APIRoute } from 'astro';
import { authService } from '@/lib/authService';

// API endpoint для проксирования файлов из PocketBase
export const GET: APIRoute = async ({ request }) => {
  const url = new URL(request.url);
  const collectionName = url.pathname.split('/')[3]; // /api/files-proxy/{collectionName}/{recordId}/{filename}
  const recordId = url.pathname.split('/')[4];
  const filename = url.pathname.split('/')[5];

  if (!collectionName || !recordId || !filename) {
    return new Response(JSON.stringify({ error: 'Missing required parameters' }), {
      status: 400,
      headers: { 'Content-Type': 'application/json' }
    });
  }

  try {
    const pb = authService.createClientFromRequest(request);

    // Получаем файл из PocketBase
    const pocketBaseUrl = process.env.PUBLIC_POCKETBASE_URL || process.env.POCKETBASE_URL || 'http://127.0.0.1:8090';
    const fileUrl = `${pocketBaseUrl}/api/files/${collectionName}/${recordId}/${filename}`;

    // Делаем запрос к оригинальному файлу в PocketBase
    const fileResponse = await fetch(fileUrl);

    if (!fileResponse.ok) {
      throw new Error(`Failed to fetch file: ${fileResponse.status} ${fileResponse.statusText}`);
    }

    // Возвращаем содержимое файла с соответствующими заголовками
    const buffer = await fileResponse.arrayBuffer();
    const contentType = fileResponse.headers.get('content-type') || 'application/octet-stream';

    return new Response(buffer, {
      status: 200,
      headers: {
        'Content-Type': contentType,
        'Cache-Control': 'public, max-age=31536000, immutable', // 1 год кеширования
      }
    });
  } catch (error) {
    console.error('Error proxying file:', error);
    return new Response(JSON.stringify({ error: 'Failed to proxy file' }), {
      status: 500,
      headers: { 'Content-Type': 'application/json' }
    });
  }
};