예제 #1
0
 private void WriteCommonPersonValues(JsonWriter writer, PersonEventBase personEvent)
 {
     writer.WritePropertyName("$token");
     writer.WriteValue(personEvent.ProjectToken);
     writer.WritePropertyName("$distinct_id");
     writer.WriteValue(personEvent.DistinctUserId);
     if (personEvent.Options.MaskIpAddress)
     {
         writer.WritePropertyName("$ip");
         writer.WriteValue(0);
     }
     else if (!String.IsNullOrEmpty(personEvent.IpAddress))
     {
         writer.WritePropertyName("$ip");
         writer.WriteValue(personEvent.IpAddress);
     }
     if (personEvent.EventTime.HasValue)
     {
         writer.WritePropertyName("$time");
         writer.WriteAsMillisecondsSinceEpochBase(personEvent.EventTime.Value);
     }
     if (personEvent.IgnoreTime.HasValue)
     {
         writer.WritePropertyName("$ignore_time");
         writer.WriteValue(personEvent.IgnoreTime.Value);
     }
 }
예제 #2
0
 public override void Send(PersonEventBase personEvent)
 {
     HttpWebRequest request = GetRequest(personEvent);
     IAsyncResult   result  = request.BeginGetResponse(new AsyncCallHandler(request,
                                                                            //this.Log,
                                                                            this.HandleResponse).HandleAsyncCallback, null);
 }
예제 #3
0
        public virtual String GetJson(PersonEventBase personEvent)
        {
            String returnValue = null;

            var sb = new StringBuilder();

            using (var sw = new StringWriter(sb))
            {
                using (JsonWriter writer = new JsonTextWriter(sw))
                {
                    writer.Formatting = Formatting.None;

                    if (personEvent is PersonSetEvent)
                    {
                        this.WriteSetJson(writer, (PersonSetEvent)personEvent);
                    }
                    else if (personEvent is PersonSetOnceEvent)
                    {
                        this.WriteSetOnceJson(writer, (PersonSetOnceEvent)personEvent);
                    }
                    else if (personEvent is PersonTransactionEvent)
                    {
                        this.WriteTrackChargeJson(writer, (PersonTransactionEvent)personEvent);
                    }
                    else if (personEvent is PersonIncrementEvent)
                    {
                        this.WriteIncrementJson(writer, (PersonIncrementEvent)personEvent);
                    }
                }
                returnValue = sb.ToString();
            }

            return(returnValue);
        }
예제 #4
0
        protected virtual HttpWebRequest GetRequest(PersonEventBase personEvent)
        {
            JsonSerializer jsonSerializer = new JsonSerializer();
            String         data           = jsonSerializer.GetJson(personEvent);

            //if (this.Log != null)
            //{
            //    this.Log.DebugFormat("Json Data: {0}", data);
            //}
            data = Base64Encode(data);

            StringBuilder sb = new StringBuilder();

            sb.AppendFormat(PersonUrlTemplate, data);
            if (personEvent.Options.TestMode)
            {
                sb.Append("&test=1");
            }
            if (personEvent.Options.MaskIpAddress)
            {
                sb.Append("&ip=1");
            }
            if (personEvent.Options.Verbose)
            {
                sb.Append("&verbose=1");
            }

            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(sb.ToString());

            request.Method = "GET";
            return(request);
        }
예제 #5
0
        public override void Send(PersonEventBase personEvent)
        {
            HttpWebRequest request = GetRequest(personEvent);
            IAsyncResult   result  = request.BeginGetResponse(null, null);

            result.AsyncWaitHandle.WaitOne();
            HandleResponse(request, result);
        }
        public virtual void Send(PersonEventBase personEvent)
        {
            var eventSender = this.ApiCaller ?? new AsyncApiCaller();// {Log = this.Log};

            eventSender.Send(personEvent);
        }
예제 #7
0
 public abstract void Send(PersonEventBase personEvent);