private async System.Threading.Tasks.Task <System.Net.Http.HttpResponseMessage> PostData(System.DateTimeOffset timestamp, System.String logType, System.String message, System.String customerId, System.String sharedKey)

        {
            var url = $"https://{customerId}.ods.opinsights.azure.com/api/logs?api-version=2016-04-01";

#if DEBUG
            System.Console.WriteLine($"{{ \"{System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName}.{System.Reflection.MethodBase.GetCurrentMethod().Name}\" :  {{");
            System.Console.WriteLine($"\"customerId\" : \"{customerId}\",");
            System.Console.WriteLine($"\"logType\" : \"{logType}\",");
            System.Console.WriteLine($"\"sharedKeySecret\" : \"{sharedKey}\",");
            System.Console.WriteLine($"\"timestamp\" : \"{timestamp}\",");
            System.Console.WriteLine($"\"message\" : {{ {message}  }}, ");
            System.Console.WriteLine(url);
#endif

            var response =
                new System.Threading.Tasks.Task <System.Net.Http.HttpResponseMessage>(() => null);
            var datestring    = System.DateTime.UtcNow.ToString("r");
            var authorization = this.GetAuthorizationHash(message, datestring, customerId, sharedKey);
            var client        = new System.Net.Http.HttpClient
            {
                Timeout = this.WebTimeOut
            };
            if (!Connectivity.NetworkStatus.IsAvailable)
            {
                var err = new System.ApplicationException("The Internet is not available");
                throw err;
            }
            else
            {
                try
                {
                    // Note the formatting of the datestring vs timestamp

                    client.DefaultRequestHeaders.Add("Accept", "application/json");
                    client.DefaultRequestHeaders.Add("Log-Type", logType);
                    client.DefaultRequestHeaders.Add("Authorization", authorization);
                    client.DefaultRequestHeaders.Add("x-ms-date", datestring);

                    // let the Log Analytics HTTP DataCollector API assign the Timestamp
                    client.DefaultRequestHeaders.Add("time-generated-field", timestamp.ToIso8601());

                    System.Net.Http.HttpContent httpContent = new System.Net.Http.StringContent(message, System.Text.Encoding.UTF8);
                    httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                    response = client.PostAsync(new System.Uri(url), httpContent);
#if DEBUG
                    System.Console.WriteLine($"\"PostDate response\": {{ {response.ToJson()} }}");
#endif
                }
#pragma warning disable 168
                catch (System.Exception excep)
#pragma warning restore 168
                {
                    var stateMsg =
                        $"Error E00650 in \"{System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName}.{System.Reflection.MethodBase.GetCurrentMethod().Name}\" sending \"{message.ToJson()}\" to \"{url}\"";
                    // ReSharper disable once UnusedVariable
                    var ex         = new System.Exception(stateMsg, excep);
                    var logMessage = new Generic.LogMessage <System.String>(Microsoft.Extensions.Logging.LogLevel.Error, Events.E00650, stateMsg, excep, this.AzureDataCollectorFormatter);
                    this.AddMessage(logMessage);
#if DEBUG
                    System.Console.WriteLine($"\"PostDate Exception\": {{ {excep.ToJson()} }}");
#endif
                }
#if DEBUG
                finally
                {
                    System.Console.WriteLine($"}}");
                }
#endif
                return(await response);
            }
        }