public static async Task <TextHttpOperationResult <T> > TryReceiveAsObjectAsync <T>(this Task <HttpResponseMessage> requestTask, ISerializer <string>?serializer = null, bool textRequired = false)
        {
            var result = new TextHttpOperationResult <T>();

            try
            {
                result.ResponseMessage = await requestTask.ConfigureAwait(false);

                if (!textRequired)
                {
                    result.Data = await result.ResponseMessage.ReceiveAsObjectAsync <T>(serializer).ConfigureAwait(false);
                }
                else
                {
                    var json = await result.ResponseMessage.Content.ReadAsStringAsync().ConfigureAwait(false);

                    result.Text = json;

                    if (!string.IsNullOrEmpty(json))
                    {
                        result.Data = (serializer ?? HttpRequestGlobalOptions.DefaultJsonSerializer).Deserialize <T>(json);
                    }
                }
            }
            catch (Exception ex)
            {
                result.Exception = ex;
            }
            return(result);
        }
        protected void CheckHasCacheHeader(TextHttpOperationResult <WeatherForecast[]> httpResult)
        {
            var headerExist = httpResult.ResponseMessage.Headers.TryGetValues(HeaderKey, out var value);

            Assert.IsTrue(headerExist, $"{httpResult.ResponseMessage.RequestMessage.RequestUri} : [{httpResult.ResponseMessage.StatusCode}] - {httpResult.Text}");
            Assert.AreEqual(HeaderValue, value.First());
        }
        public static async Task <TextHttpOperationResult <JsonDocument> > TryReceiveAsJsonDocumentAsync(this Task <HttpResponseMessage> requestTask, JsonDocumentOptions jsonDocumentOptions = default, bool textRequired = false)
        {
            var result = new TextHttpOperationResult <JsonDocument>();

            try
            {
                result.ResponseMessage = await requestTask.ConfigureAwait(false);

                if (!textRequired)
                {
                    result.Data = await result.ResponseMessage.ReceiveAsJsonDocumentAsync(jsonDocumentOptions).ConfigureAwait(false);
                }
                else
                {
                    var json = await result.ResponseMessage.Content.ReadAsStringAsync().ConfigureAwait(false);

                    result.Text = json;

                    if (!string.IsNullOrEmpty(json))
                    {
                        result.Data = JsonDocument.Parse(json, jsonDocumentOptions);
                    }
                }
            }
            catch (Exception ex)
            {
                result.Exception = ex;
            }
            return(result);
        }
        protected void CheckNoCacheHeader(TextHttpOperationResult <WeatherForecast[]> httpResult)
        {
            var headerExist = httpResult.ResponseMessage.Headers.TryGetValues(HeaderKey, out _);

            Assert.IsFalse(headerExist);
        }