package com.takensoft.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CommonsRequestLoggingFilter;
import org.springframework.web.filter.ForwardedHeaderFilter;

import jakarta.servlet.Filter;
/**
 * @author  : takensoft
 * @since   : 2025.01.22
 * @modification
 *     since    |    author    | description
 *  2025.01.22  |  takensoft   | 최초 등록
 *
 * Web 관련 설정을 위한 COnfig
 */
@Configuration
public class WebConfig {

    /**
     * @return ForwardedHeaderFilter
     *
     * ForwardedHeaderFilter를 사용하여 HTTP 요청의 헤더 정보(특히 Forwarded 및 X-Forwarded-* 헤더)를 적절히 처리할 수 있도록 필터를 추가
     */
    @Bean
    public Filter forwardedHeaderFilter() {
        return new ForwardedHeaderFilter();
    }
    /**
     * @return @return CommonsRequestLoggingFilter
     *
     * CommonsRequestLoggingFilter를 사용하여 HTTP 요청 로깅을 설정
     */
    @Bean
    public CommonsRequestLoggingFilter requestLoggingFilter() {
        CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter();
        loggingFilter.setIncludeClientInfo(true);
        loggingFilter.setIncludeQueryString(true);
        loggingFilter.setIncludePayload(true);
        loggingFilter.setIncludeHeaders(true);
        return loggingFilter;
    }
}
