Пример #1
0
        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));
        }
Пример #2
0
 public async Task <TrackingOutcome> TrackAsync(MixpanelEvent @event) => await TrackAsync(@event, CancellationToken.None).ConfigureAwait(false);