private void UpdateGeoAndlocation(PersistentEvent ev, GeoResult result, bool isValidLocation = true) { ev.Geo = result?.ToString(); if (result != null && isValidLocation) ev.SetLocation(result.ToLocation()); else ev.Data.Remove(Event.KnownDataKeys.Location); }
public static PersistentEvent ToSessionStartEvent(this PersistentEvent source, DateTime? lastActivityUtc = null, bool? isSessionEnd = null, bool hasPremiumFeatures = true) { var startEvent = new PersistentEvent { SessionId = source.SessionId, Date = source.Date, Geo = source.Geo, OrganizationId = source.OrganizationId, ProjectId = source.ProjectId, Type = Event.KnownTypes.Session, Value = 0 }; var ei = source.GetEnvironmentInfo(); if (ei != null) { startEvent.SetEnvironmentInfo(new EnvironmentInfo { Architecture = ei.Architecture, CommandLine = ei.CommandLine, Data = ei.Data, InstallId = ei.InstallId, IpAddress = ei.IpAddress, MachineName = ei.MachineName, OSName = ei.OSName, OSVersion = ei.OSVersion, ProcessId = ei.ProcessId, ProcessName = ei.ProcessName, ProcessorCount = ei.ProcessorCount, RuntimeVersion = ei.RuntimeVersion, TotalPhysicalMemory = ei.TotalPhysicalMemory }); } var ri = source.GetRequestInfo(); if (ri != null) { startEvent.AddRequestInfo(new RequestInfo { ClientIpAddress = ri.ClientIpAddress, Data = ri.Data, Host = ri.Host, HttpMethod = ri.HttpMethod, IsSecure = ri.IsSecure, Port = ri.Port, Path = ri.Path, Referrer = ri.Referrer, UserAgent = ri.UserAgent }); } startEvent.SetVersion(source.GetVersion()); startEvent.SetUserIdentity(source.GetUserIdentity()); startEvent.SetLocation(source.GetLocation()); if (lastActivityUtc.HasValue) startEvent.UpdateSessionStart(lastActivityUtc.Value, isSessionEnd.GetValueOrDefault()); if (hasPremiumFeatures) startEvent.CopyDataToIndex(); return startEvent; }