//done private void CreateDataLogger(ILogConfig config) { _dataLoggerService = new DataLoggerService(config); _dataLoggerService.LoggingStarted += (sender, args) => { _mainViewModel.GuiStatusViewModel.IsLogging = true; _mainViewModel.GuiStatusViewModel.LoggingStatus = "Logging active!"; }; _dataLoggerService.LoggingStopped += (sender, args) => { _mainViewModel.GuiStatusViewModel.IsLogging = false; _mainViewModel.GuiStatusViewModel.LoggingStatus = "Logging stopped"; }; }
public async void SecondCase() { DispatcherTimer dt = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(1) }; var file = await DataLoggerService.FindFile($"data_{DataLoggerService.GetDate()}.dat", true); dt.Tick += async(s, e) => { if (file != null) { await DataLoggerService.AddContentToFile(file, $"{Temperature}_{DataLoggerService.GetDateTime()}"); } }; dt.Start(); }
public void SimpleCase() { DispatcherTimer dt = new DispatcherTimer() { Interval = TimeSpan.FromMinutes(1) }; dt.Tick += async(s, e) => { var file = await DataLoggerService.FindFile($"data_{DataLoggerService.GetDateTime()}.dat", true); if (file != null) { await DataLoggerService.WriteFile(file, $"{Temperature}_{DataLoggerService.GetDateTime()}"); } }; dt.Start(); }
public DataQueryModule(INAServerContext serverContext) : base("/qr") { ServerContext = serverContext; var accessValidator = new StatelessClientValidator <NAAccessKey, NAApiAccessScope>(); this.RequiresAllClaims(new[] { accessValidator.GetAccessClaim(NAApiAccessScope.Query) }, accessValidator.GetAccessClaim(NAApiAccessScope.Admin)); // Query Log Requests // Limit is the max number of log requests to return. Default 100 Get("/log/{limit:int}", async args => { var itemLimit = args.limit as int? ?? 100; var dataLoggerService = new DataLoggerService(ServerContext); var data = await dataLoggerService.QueryRequestsAsync(itemLimit); return(Response.AsJsonNet(data)); }); // Query SessionData // Id is the ID of the session to find Get("/sessdata/{id}", async args => { var sessionStorageService = new SessionStorageService(ServerContext); var data = await sessionStorageService.GetSessionFromIdentifierAsync((string)args.id); return(Response.AsJsonNet(data)); }); // Query Tagged Requests // Tag is the tag to filter by // Limit is the max number of log requests to return Get("/tagged/{tags}/{limit:int}", async args => { var itemLimit = args.limit as int? ?? 100; var filterTags = (args.tags != null) ? ((string)args.tags).Split(',') : null; var dataLoggerService = new DataLoggerService(ServerContext); var data = await dataLoggerService.QueryTaggedRequestsAsync(itemLimit, filterTags); return(Response.AsJsonNet(data)); }); }
/// <summary> /// Process and log the request and associated data /// </summary> private async Task ProcessRequestDataAsync(DataRequestType requestType = DataRequestType.Log) { Guid?sessionIdentifier = null; // Null means it will be automatically created // A cross-domain SID can be specified var sentSessId = (string)Request.Form.sid; // TODO: Maybe validation to ensure SID is not being overwritten if (sentSessId != null) { if (Guid.TryParse(sentSessId, out Guid resultSessGuid)) { // TODO: Possibly note that session used custom ID sessionIdentifier = resultSessGuid; } } var sessionInfo = await CreateOrRetrieveSessionAsync(sessionIdentifier); var currentSession = sessionInfo.Item1; var newSession = sessionInfo.Item2; var eventIdentifier = Guid.NewGuid(); if (requestType.HasFlag(DataRequestType.Log)) { var req = new LogRequest { Identifier = eventIdentifier, SessionIdentifier = currentSession.SessionId, Timestamp = DateTime.Now, RequestType = requestType }; // Get client address var clientAddr = GetClientAddress(); req.OriginAddress = clientAddr; req.KQApiNode = Request.Url; if (requestType.HasFlag(DataRequestType.Hit)) { // Map to Hit request var hitReq = Mapper.Map <HitRequest>(req); // Check if also a web request if (requestType.HasFlag(DataRequestType.Web)) { hitReq.Referrer = Request.Headers.Referrer; // Attempt to get page URL hitReq.PageIdentifier = (string)Request.Query.u // Query string ?? (string)Request.Form.u // Form data ?? Request.Headers.Referrer; // Referrer // Check if FetchScript if (requestType.HasFlag(DataRequestType.FetchScript)) { // Map to FetchScriptRequest var fetchScriptReq = Mapper.Map <FetchScriptRequest>(hitReq); hitReq = fetchScriptReq; } } req = hitReq; } // Tag is not compatible with Hit else if (requestType.HasFlag(DataRequestType.Tag)) { // Log with custom data var tagReq = Mapper.Map <TagRequest>(req); tagReq.Tag = Request.Form.tag; tagReq.ExtraData = Request.Form.data; req = tagReq; } // Redirect is not compatible with Tag or Hit else if (requestType.HasFlag(DataRequestType.Redirect)) { // TODO: Log redirect var redirReq = Mapper.Map <RedirectRequest>(req); // This flag IMPLIES the Web flag if (requestType.HasFlag(DataRequestType.Web)) { // Get target URL and save redirReq.DestinationUrl = Request.Query.t; } req = redirReq; } var dataLoggerService = new DataLoggerService(ServerContext); // Save data using Logger service, on the thread pool var saveDataTask = Task.Factory.StartNew(async() => { await dataLoggerService.SaveLogRequestAsync(req); }); // Custom saving if (req is TagRequest) { var saveTagTask = Task.Factory.StartNew(async() => { await dataLoggerService.SaveTagRequestAsync((TagRequest)req); }); } } }
public async void ThirdCase() { var path = await DataLoggerService.CreateDatabase("db.dat"); var connection = new SQLite.Net.SQLiteConnection(new SQLitePlatformWinRT(), path); }