Represents a Visitor or user of the application.
        /// <summary>
        /// Recreate a SessionManager from state.
        /// </summary>
        /// <param name="sessionState">SessionState containing details captured from a previous SessionManager or null if no previous SessionManager.</param>
        /// <param name="sampleRate">Sample rate to determine likelyhood of a new installation being tracked or not.</param>
        /// <returns>Recreated SessionManager.</returns>
        public SessionManager(SessionState sessionState, double sampleRate = 100.0)
        {
            if (sessionState != null)
            {
                visitor = new Visitor(sessionState.VisitorId, sessionState.FirstVisitAt);
                Session = new Session(sessionState.SessionStartedAt, sessionState.SessionNumber, sessionState.SessionHitCount, sessionState.HitId);
                Referrer = sessionState.Referrer;
                PreviousSessionStartedAt = sessionState.PreviousSessionStartedAt;
                lastActivityAt = sessionState.LastActivityAt;
                SessionStatus = sessionState.SessionStatus;
                VisitorStatus = sessionState.VisitorStatus;
            }
            else
            {
                var localStorage = ApplicationData.Current.LocalSettings;
                Guid guid = Guid.Empty;
                if (localStorage.Values.ContainsKey(guidKey) ) {
                    guid =  (Guid)localStorage.Values[guidKey];
                } else {
                    // Need a better way to get a unique guid
                    guid = Guid.NewGuid();
                    localStorage.Values[guidKey] = guid;
                }

                visitor = new Visitor(guid);
                Session = new Session();
                PreviousSessionStartedAt = Session.StartedAt;
                SessionStatus = SessionStatus.Starting;
                var willTrackThisVisitor = ShouldTrackThisNewVisitor(sampleRate);
                VisitorStatus = willTrackThisVisitor ? VisitorStatus.Active : VisitorStatus.SampledOut;
                if (!willTrackThisVisitor)
                    Debug.WriteLine("Will not track this visitor. Sampling rate of {0} excluded them", sampleRate);
            }
        }
        public void New_Visitor_With_Parameters_Sets_Properties()
        {
            var id = Guid.NewGuid();

            var visitor = new Visitor(id);

            Assert.AreEqual(id, visitor.ClientId);
        }
        public void New_Default_Visitor_Started_Now()
        {
            var start = DateTimeOffset.Now;
            var session = new Visitor();
            var end = DateTimeOffset.Now;

            Assert.IsTrue(session.FirstVisitAt >= start, "FirstVisitAt too early expected after {0} found {1}", start, session.FirstVisitAt);
            Assert.IsTrue(session.FirstVisitAt <= end, "FirstVisitAt too late expected before {0} found {1}", end, session.FirstVisitAt);
        }
        public void New_Visitor_With_Parameters_Sets_Properties()
        {
            var id = Guid.NewGuid();
            var startedAt = DateTimeOffset.Now.Subtract(new TimeSpan(1, 2, 3, 4, 5));

            var visitor = new Visitor(id, startedAt);

            Assert.AreEqual(id, visitor.ClientId);
            Assert.AreEqual(startedAt, visitor.FirstVisitAt);
        }
        /// <summary>
        /// Recreate a SessionManager from state.
        /// </summary>
        /// <param name="timeout">How long before a session will expire if no activity is seen.</param>
        /// <param name="sessionState">SessionState containing details captured from a previous SessionManager.</param>
        /// <returns>Recreated SessionManager.</returns>
        public SessionManager(TimeSpan timeout, SessionState sessionState)
        {
            this.timeout = timeout;

            if (sessionState != null)
            {
                visitor = new Visitor(sessionState.VisitorId, sessionState.FirstVisitAt);
                Session = new Session(sessionState.SessionStartedAt, sessionState.SessionNumber, sessionState.SessionHitCount, sessionState.HitId);
                Referrer = sessionState.Referrer;
                PreviousSessionStartedAt = sessionState.PreviousSessionStartedAt;
                lastActivityAt = sessionState.LastActivityAt;
            }
            else
            {
                visitor = new Visitor();
                Session = new Session();
                PreviousSessionStartedAt = Session.StartedAt;
            }
        }
Exemple #6
0
 /// <summary>
 /// Recreate a SessionManager from state.
 /// </summary>
 /// <param name="sessionState">SessionState containing details captured from a previous SessionManager or null if no previous SessionManager.</param>
 /// <param name="sampleRate">Sample rate to determine likelyhood of a new installation being tracked or not.</param>
 /// <returns>Recreated SessionManager.</returns>
 public SessionManager(SessionState sessionState, double sampleRate = 100.0)
 {
     if (sessionState != null)
     {
         visitor = new Visitor(sessionState.VisitorId);
         Referrer = sessionState.Referrer;
         lastActivityAt = sessionState.LastActivityAt;
         SessionStatus = sessionState.SessionStatus;
         VisitorStatus = sessionState.VisitorStatus;
     }
     else
     {
         visitor = new Visitor();
         SessionStatus = SessionStatus.Starting;
         var willTrackThisVisitor = ShouldTrackThisNewVisitor(sampleRate);
         VisitorStatus = willTrackThisVisitor ? VisitorStatus.Active : VisitorStatus.SampledOut;
         if (!willTrackThisVisitor)
             Debug.WriteLine("Will not track this visitor. Sampling rate of {0} excluded them", sampleRate);
     }
 }