/// <summary>
 /// Constructor
 /// </summary>
 /// <param name="config"></param>
 /// <param name="attr"></param>
 /// <param name="httpClientFactory"></param>
 public HttpCallMessageAsyncCollector(HttpCallConfiguration config, HttpCallAttribute attr, IHttpClientFactory httpClientFactory)
 {
     this.config            = config;
     this.attr              = attr;
     this.httpClientFactory = httpClientFactory;
 }
        /// <summary>
        /// Combine <see cref="HttpCallMessage"/> with <see cref="HttpCallConfiguration"/> and <see cref="HttpCallAttribute"/>
        /// </summary>
        /// <param name="message"></param>
        /// <param name="config"></param>
        /// <param name="attr"></param>
        /// <returns></returns>
        private static HttpCallMessage MergeMessageProperties(HttpCallMessage message, HttpCallConfiguration config, HttpCallAttribute attr)
        {
            var result = new HttpCallMessage
            {
                HttpMethod = Utils.MergeValueForProperty(message.HttpMethod, config.HttpMethod, attr.HttpMethod),
                Url        = Utils.MergeValueForProperty(message.Url, config.Url, attr.Url),
                MediaType  = Utils.MergeValueForProperty(message.MediaType, config.MediaType, attr.MediaType),
                Body       = message.Body
            };

            return(result);
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="config"></param>
 /// <param name="attr"></param>
 public HttpCallMessageAsyncCollector(HttpCallConfiguration config, HttpCallAttribute attr) : this(config, attr, HttpClientFactory.Instance)
 {
 }