// /public/js/api-helper.js

// API 기본 URL 설정
const API_BASE = location.hostname.includes('localhost') 
  ? 'http://localhost:3005/api' 
  : 'https://api.hyungi.net/api';

// 인증된 fetch 함수
async function authFetch(url, options = {}) {
  const token = localStorage.getItem('token');
  
  if (!token) {
    console.error('토큰이 없습니다. 로그인이 필요합니다.');
    window.location.href = '/index.html';
    return;
  }

  const defaultHeaders = {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  };

  const response = await fetch(url, {
    ...options,
    headers: {
      ...defaultHeaders,
      ...options.headers
    }
  });

  // 401 에러 시 로그인 페이지로
  if (response.status === 401) {
    console.error('인증 실패. 다시 로그인해주세요.');
    localStorage.removeItem('token');
    window.location.href = '/index.html';
    return;
  }

  return response;
}

// GET 요청 헬퍼
async function apiGet(endpoint) {
  const response = await authFetch(`${API_BASE}${endpoint}`);
  if (!response) return null;
  return response.json();
}

// POST 요청 헬퍼
async function apiPost(endpoint, data) {
  const response = await authFetch(`${API_BASE}${endpoint}`, {
    method: 'POST',
    body: JSON.stringify(data)
  });
  if (!response) return null;
  return response.json();
}

// PUT 요청 헬퍼
async function apiPut(endpoint, data) {
  const response = await authFetch(`${API_BASE}${endpoint}`, {
    method: 'PUT',
    body: JSON.stringify(data)
  });
  if (!response) return null;
  return response.json();
}

// DELETE 요청 헬퍼
async function apiDelete(endpoint) {
  const response = await authFetch(`${API_BASE}${endpoint}`, {
    method: 'DELETE'
  });
  if (!response) return null;
  return response.json();
}

// 내보내기 (다른 파일에서 사용 가능)
window.API = {
  get: apiGet,
  post: apiPost,
  put: apiPut,
  delete: apiDelete,
  fetch: authFetch,
  BASE: API_BASE
};