package egovframework.util;

import javax.servlet.http.HttpServletRequest;

/**
 * packageName    : egovframework.util
 * fileName       : HttpServletUtil
 * author         : 박성영
 * date           : 25. 5. 8.
 * description    :
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 25. 5. 8.        박성영       최초 생성
 */
public class HttpServletUtil {

    /**
     * AJAX 요청인지 확인하는 메소드
     * *.ajax 패턴의 URL인 경우 AJAX 요청으로 간주합니다.
     */
    public static boolean isAjaxRequest(HttpServletRequest request) {
        String requestURI = request.getRequestURI();
        return requestURI != null && requestURI.endsWith(".ajax");
    }

    /**
     * 실제 AJAX 요청인지 확인하는 메소드
     * HTTP 헤더 정보를 기반으로 AJAX 요청인지 판단합니다.
     *
     * 다음 조건 중 하나라도 만족하면 AJAX 요청으로 간주합니다:
     * 1. 'X-Requested-With: XMLHttpRequest' 헤더가 있는 경우
     * 2. 'Accept' 헤더가 'application/json'을 포함하는 경우
     * 3. 'Content-Type' 헤더가 'application/json'인 경우
     */
    public static boolean isRealAjaxRequest(HttpServletRequest request) {
        // 'X-Requested-With: XMLHttpRequest' 헤더 확인 (가장 일반적인 AJAX 요청 지표)
        String requestedWith = request.getHeader("X-Requested-With");
        if ("XMLHttpRequest".equals(requestedWith)) {
            return true;
        }

        // 'Accept' 헤더가 'application/json'을 포함하는지 확인
        String accept = request.getHeader("Accept");
        if (accept != null && accept.contains("application/json")) {
            return true;
        }

        // 'Content-Type' 헤더가 'application/json'인지 확인
        String contentType = request.getHeader("Content-Type");
        if (contentType != null && contentType.contains("application/json")) {
            return true;
        }

        return false;
    }

}
