using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Edge.Core.Parser.HttpMessageParser
{
    public abstract class BaseHttpMessage<T> : MessageBase
    {
        public Guid Id { get; private set; }

        public Controller ApiController { get; protected set; }
        public T Content { get; set; }
        //public HttpRequestMessage Request { get; set; }

        //private BaseHttpMessage() { }
        public BaseHttpMessage(Guid id)
        {
            this.Id = id;
        }

        public override string ToLogString()
        {
            return Content?.ToString() ?? "";
        }

        //public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
        //{
        //    return Task.FromResult<HttpResponseMessage>(this.Execute());
        //}

        //private HttpResponseMessage Execute()
        //{
        //    HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK);
        //    try
        //    {
        //        //httpResponseMessage.RequestMessage = request;
        //    }
        //    catch
        //    {
        //        httpResponseMessage.Dispose();
        //        throw;
        //    }
        //    return httpResponseMessage;
        //}
    }
}