public async Task <TrackingOutcome> TrackAsync(MixpanelEvent @event, CancellationToken cancellationToken) { Condition.Requires(@event, nameof(@event)).IsNotNull(); cancellationToken.ThrowIfCancellationRequested(); var serializedEvent = JsonConvert.SerializeObject(@event); var eventBytes = Encoding.UTF8.GetBytes(serializedEvent); var base64 = Convert.ToBase64String(eventBytes); var relativeUri = $"?data={base64}&verbose=1"; var uri = new Uri(TrackUri, relativeUri); var response = await HttpClient.GetAsync(uri, cancellationToken).ConfigureAwait(false); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false); var trackingResponse = JsonConvert.DeserializeObject <TrackingResponse>(content); return(new TrackingOutcome(trackingResponse.Status.ToString(), trackingResponse.Error)); }
public async Task <TrackingOutcome> TrackAsync(MixpanelEvent @event) => await TrackAsync(@event, CancellationToken.None).ConfigureAwait(false);