
/**
 * 응답 파싱 유틸리티 함수
 */
export const parseResponse = async (response: Response) => {
  try {
    // 비어있는 응답 또는 401 응답을 먼저 확인
    if (response.status === 401) {
      if (response.headers.get('content-length') === '0' || await response.clone().text() === '') {
        return { 
          error: '인증 실패: 잘못된 인증 정보 또는 서버 설정 문제',
          status: 401 
        };
      }
    }
    
    // 응답 내용 확인 (디버깅용)
    const responseText = await response.text();
    console.log('응답 원본:', responseText, 'Status:', response.status);
    
    // 빈 응답 또는 공백만 있는 응답 처리
    if (!responseText || responseText.trim() === '') {
      if (response.status === 401) {
        return { 
          error: '인증 실패: 서버가 인증을 거부했습니다.', 
          status: 401 
        };
      } else if (response.status === 404) {
        return { 
          error: '서버 경로를 찾을 수 없습니다. Supabase URL을 확인하세요.',
          status: 404 
        };
      } else if (response.status >= 200 && response.status < 300) {
        return {
          success: true,
          status: response.status,
          message: '서버가 성공 상태를 반환했지만 응답 내용이 없습니다.'
        };
      } else {
        return { 
          error: `서버가 빈 응답을 반환했습니다 (상태 코드: ${response.status})`,
          status: response.status 
        };
      }
    }
    
    try {
      return JSON.parse(responseText);
    } catch (parseError) {
      console.error('JSON 파싱 오류:', parseError, '원본 텍스트:', responseText);
      
      // HTTP 상태 코드에 따른 적절한 오류 메시지 반환
      if (response.status === 401) {
        return { 
          error: '인증 실패: 이메일 또는 비밀번호가 올바르지 않습니다.',
          status: 401 
        };
      } else if (response.status === 404) {
        return { 
          error: '서버 경로를 찾을 수 없습니다. Supabase URL을 확인하세요.',
          status: 404
        };
      } else if (response.status >= 500) {
        return { 
          error: '서버 내부 오류가 발생했습니다.',
          status: response.status
        };
      } else if (response.status >= 200 && response.status < 300) {
        return {
          success: true,
          status: response.status,
          message: '서버가 성공 상태를 반환했지만 JSON 형식이 아닙니다.'
        };
      } else {
        return { 
          error: `응답 형식 오류 (상태 코드: ${response.status}): 서버가 올바른 JSON 응답을 반환하지 않았습니다.`,
          status: response.status,
          rawResponse: responseText
        };
      }
    }
  } catch (parseError) {
    console.error('응답 파싱 오류:', parseError);
    throw parseError;
  }
};
