namespace UVC.Data
{
    /// <summary>
    /// HttpResponseMask.Apply 메서드의 결과를 나타내는 클래스입니다.
    /// </summary>
    public class HttpResponseResult
    {
        /// <summary>
        /// 응답이 성공했는지 여부를 나타냅니다.
        /// </summary>
        public bool IsSuccess { get; set; }
        /// <summary>
        /// 성공적으로 파싱된 경우, 추출된 데이터의 문자열 표현입니다.
        /// <see cref="IsSuccess"/>가 <c>false</c>인 경우 이 값은 <c>null</c> 입니다.
        /// </summary>
        public string? Data { get; set; }
        /// <summary>
        /// 파싱에 실패한 경우, 원본 응답 메시지 또는 오류 메시지를 포함합니다.
        /// <see cref="IsSuccess"/>가 <c>true</c>인 경우 이 값은 일반적으로 <c>null</c>입니다.
        /// </summary>
        public string? Message { get; set; }

        /// <summary>
        /// <see cref="HttpResponseResult"/> 클래스의 새 인스턴스를 초기화합니다.
        /// </summary>
        /// <param name="isSuccess">파싱 성공 여부입니다.</param>
        /// <param name="data">추출된 데이터입니다. 성공하지 못한 경우 <c>null</c>일 수 있습니다.</param>
        /// <param name="message">실패 시 메시지입니다. 성공한 경우 <c>null</c>일 수 있습니다.</param>
        public HttpResponseResult(bool isSuccess, string? data, string? message = null)
        {
            IsSuccess = isSuccess;
            Data = data;
            Message = message;
        }
    }
}
