/// <summary> /// Send Post network call to VWO servers. /// </summary> /// <returns>Boolean value specifying flush was successful or not.</returns> private async Task <bool> sendPostCall() { string PayLoad = HttpRequestBuilder.GetJsonString(this.batchQueue); var ApiRequest = ServerSideVerb.EventBatching(this.accountId, this.isDevelopmentMode, this.apikey); HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Add("Authorization", this.apikey); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var data = new StringContent(PayLoad, Encoding.UTF8, "application/json"); try { HttpResponseMessage response = await httpClient.PostAsync(ApiRequest.Uri, data); response.EnsureSuccessStatusCode(); if (response.StatusCode == System.Net.HttpStatusCode.OK && response.StatusCode < System.Net.HttpStatusCode.Ambiguous) { if (flushCallback != null) { flushCallback.onFlush(null, PayLoad); } LogInfoMessage.ImpressionSuccess(file, ApiRequest.logUri?.ToString()); return(true); } else if (response.StatusCode == System.Net.HttpStatusCode.RequestEntityTooLarge) { if (flushCallback != null) { flushCallback.onFlush("Payload size too large", PayLoad); } LogDebugMessage.BatchEventLimitExceeded(file, ApiRequest.logUri?.ToString(), this.accountId.ToString(), eventsPerRequest.ToString()); LogErrorMessage.ImpressionFailed(file, ApiRequest.logUri?.ToString()); return(false); } else if (response.StatusCode == System.Net.HttpStatusCode.BadRequest) { if (flushCallback != null) { flushCallback.onFlush("Account id not found, no request app id found, or invalid API key", PayLoad); } LogErrorMessage.BulkNotProcessed(file); LogErrorMessage.ImpressionFailed(file, ApiRequest.logUri?.ToString()); return(false); } else { LogErrorMessage.BulkNotProcessed(file); LogErrorMessage.ImpressionFailed(file, ApiRequest.logUri?.ToString()); if (flushCallback != null) { flushCallback.onFlush("Invalid call", PayLoad); } return(false); } } catch (HttpRequestException ex) { LogErrorMessage.BulkNotProcessed(file); LogErrorMessage.UnableToDisplayHttpRequest(file, ex.StackTrace); if (flushCallback != null) { flushCallback.onFlush("HttpRequest Exception", PayLoad); } return(false); } }