public MainViewModel(Settings settings, LanguageManager languageManager, HotKeyManager hotKeyManager, IPreviewWindow previewWindow, IDialogService dialogService, RecordingModel recordingModel, MainModel mainModel) : base(settings, languageManager) { _dialogService = dialogService; ShowPreviewCommand = new DelegateCommand(previewWindow.Show); #region Commands RefreshCommand = recordingModel .ObserveProperty(model => model.RecorderState) .Select(recorderState => recorderState == RecorderState.NotRecording) .ToReactiveCommand() .WithSubscribe(() => { mainModel.Refresh(); Refreshed?.Invoke(); }); OpenOutputFolderCommand = new DelegateCommand(OpenOutputFolder); SelectOutputFolderCommand = new DelegateCommand(SelectOutputFolder); ResetFFmpegFolderCommand = new DelegateCommand(() => settings.FFmpeg.FolderPath = ""); TrayLeftClickCommand = new DelegateCommand(() => hotKeyManager.FakeHotKey(settings.Tray.LeftClickAction)); #endregion }
public ConsoleManager(Settings Settings, RecordingModel RecordingModel, MainModel MainModel, ScreenShotModel ScreenShotModel, VideoSourcesViewModel VideoSourcesViewModel, IEnumerable <IVideoSourceProvider> VideoSourceProviders, VideoWritersViewModel VideoWritersViewModel, IPlatformServices PlatformServices, WebcamModel WebcamModel, IMessageProvider MessageProvider) { _settings = Settings; _recordingModel = RecordingModel; _mainModel = MainModel; _screenShotModel = ScreenShotModel; _videoSourcesViewModel = VideoSourcesViewModel; _videoSourceProviders = VideoSourceProviders; _videoWritersViewModel = VideoWritersViewModel; _platformServices = PlatformServices; _webcamModel = WebcamModel; _messageProvider = MessageProvider; // Hide on Full Screen Screenshot doesn't work on Console Settings.UI.HideOnFullScreenShot = false; }
public override Task <RecordingModel> GetRecordingFile(RecordingLookupModel request, ServerCallContext context) { RecordingModel output = new RecordingModel(); var Recording = _appDbContext.Recordings.FirstOrDefault(r => r.Id == request.RecordingId); if (Recording == null) { throw new Exception("Brak wpisu w bazie"); } var filePath = Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\recordings", Recording.RecordingPath); using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { byte[] RecordingData = System.IO.File.ReadAllBytes(filePath); fileStream.Read(RecordingData, 0, System.Convert.ToInt32(fileStream.Length)); output.RefordingFile = ByteString.CopyFrom(RecordingData); } output.Id = Recording.Id; output.Name = Recording.Name; output.Extension = Path.GetExtension(filePath); return(Task.FromResult(output)); }
public RecordingViewModel(RecordingModel recordingModel, Settings settings, TimerModel timerModel, VideoSourcesViewModel videoSourcesViewModel) { _recordingModel = recordingModel; RecordCommand = new[] { settings.Audio .ObserveProperty(audioSettings => audioSettings.Enabled), videoSourcesViewModel .ObserveProperty(sourcesViewModel => sourcesViewModel.SelectedVideoSourceKind) .Select(videoSourceProvider => !(videoSourceProvider is NoVideoSourceProvider)) } .CombineLatest(bools => bools[0] || bools[1]) .ToReactiveCommand() .WithSubscribe(recordingModel.OnRecordExecute); PauseCommand = new[] { timerModel .ObserveProperty(model => model.Waiting), recordingModel .ObserveProperty(model => model.RecorderState) .Select(recorderState => recorderState != RecorderState.NotRecording) } .CombineLatest(bools => !bools[0] && bools[1]) .ToReactiveCommand() .WithSubscribe(recordingModel.OnPauseExecute); recordingModel.PropertyChanged += (sender, e) => { switch (e.PropertyName) { case "": case null: case nameof(RecorderState): RaisePropertyChanged(nameof(RecorderState)); break; } }; }
public ConsoleManager(Settings Settings, RecordingModel RecordingModel, MainModel MainModel, ScreenShotModel ScreenShotModel, VideoSourcesViewModel VideoSourcesViewModel, IEnumerable <IVideoSourceProvider> VideoSourceProviders, IWebCamProvider WebCamProvider, VideoWritersViewModel VideoWritersViewModel) { _settings = Settings; _recordingModel = RecordingModel; _mainModel = MainModel; _screenShotModel = ScreenShotModel; _videoSourcesViewModel = VideoSourcesViewModel; _videoSourceProviders = VideoSourceProviders; _webCamProvider = WebCamProvider; _videoWritersViewModel = VideoWritersViewModel; // Hide on Full Screen Screenshot doesn't work on Console Settings.UI.HideOnFullScreenShot = false; }
public ConsoleManager(Settings settings, RecordingModel recordingModel, MainModel mainModel, ScreenShotModel screenShotModel, VideoSourcesViewModel videoSourcesViewModel, IEnumerable <IVideoSourceProvider> videoSourceProviders, IWebCamProvider webCamProvider, VideoWritersViewModel videoWritersViewModel, IPlatformServices platformServices) { _settings = settings; _recordingModel = recordingModel; _mainModel = mainModel; _screenShotModel = screenShotModel; _videoSourcesViewModel = videoSourcesViewModel; _videoSourceProviders = videoSourceProviders; _webCamProvider = webCamProvider; _videoWritersViewModel = videoWritersViewModel; _platformServices = platformServices; // Hide on Full Screen Screenshot doesn't work on Console settings.Ui.HideOnFullScreenShot = false; }
public MainVM() { Games = new ObservableCollection <GameVM>(); Messages = new ObservableCollection <string>(); StartupCmd = new RelayCommand(OnStartUpCmd); MainSupModel sup = new MainSupModel(); RecordingModel rec = new RecordingModel(); system = ActorSystem.Create("helloAkka"); super = system.ActorOf(MainSupervisor.Create(sup), "supervisor"); recer = system.ActorOf(RecordingActor.Create(rec), "recorder"); int phlwins = 0; int phllosses = 0; GameFiles = System.IO.Directory.GetFiles(GamePath).Where(f => f.Contains(".csv")).ToArray(); rec.OnRecord += (m => { Application.Current.Dispatcher.BeginInvoke( DispatcherPriority.Normal, new Action(() => { try { var gm = Newtonsoft.Json.JsonConvert.DeserializeObject <GameVM>(m); if (gm.IsGameOver == "T" && (gm.HomeTeam == "PHI" || gm.AwayTeam == "PHI")) { if ((gm.HomeTeam == "PHI" && gm.HomeRuns > gm.AwayRuns) || (gm.AwayTeam == "PHI" && gm.AwayRuns > gm.HomeRuns)) { phlwins++; } else { phllosses++; } Messages.Add($"{GamesPlayed++, 3} {gm.HomeTeam, -4} {gm.HomeRuns, 2} {gm.AwayTeam, -4} {gm.AwayRuns, 2} {phlwins,3} - {phllosses, -3}"); } var gamevm = Games.FirstOrDefault(g => g.GameID == gm.GameID); if (gamevm == null) { Games.Add(gm); } else { var gm1 = Games.First(g => g.GameID == gm.GameID); gm1.Inning = gm.Inning; gm1.AwayTeam = gm.AwayTeam; gm1.AwayRuns = gm.AwayRuns; gm1.HomeTeam = gm.HomeTeam; gm1.HomeRuns = gm.HomeRuns; gm1.Out1 = gm.Out1; gm1.Out2 = gm.Out2; gm1.RunnerOnFirst = gm.RunnerOnFirst; gm1.RunnerOnSecond = gm.RunnerOnSecond; gm1.RunnerOnThird = gm.RunnerOnThird; gm1.Strike1 = gm.Strike1; gm1.Strike2 = gm.Strike2; gm1.Ball1 = gm.Ball1; gm1.Ball2 = gm.Ball2; gm1.Ball3 = gm.Ball3; } } catch (Exception ex) { //Messages.Add(m); } })); }); }
public RecordingModule(IStumpsHost stumpsHost) { stumpsHost = stumpsHost ?? throw new ArgumentNullException(nameof(stumpsHost)); Get["/api/proxy/{serverId}/recording"] = _ => { var serverId = (string)_.serverId; var environment = stumpsHost.FindServer(serverId); var afterIndex = -1; if (Request.Query.after != null) { var afterIndexString = (string)Request.Query.after; afterIndex = int.TryParse(afterIndexString, out afterIndex) ? afterIndex : -1; } var recordingList = environment.Recordings.Find(afterIndex); var modelList = new List <RecordingModel>(); foreach (var recording in recordingList) { afterIndex++; var model = new RecordingModel { Index = afterIndex, Date = recording.ReceivedDate, Method = recording.Request.HttpMethod, RawUrl = recording.Request.RawUrl, RequestSize = recording.Request.BodyLength, ResponseSize = recording.Response.BodyLength, StatusCode = recording.Response.StatusCode, StatusDescription = recording.Response.StatusDescription }; modelList.Add(model); } return(Response.AsJson(modelList)); }; Get["/api/proxy/{serverId}/recording/{recordIndex}"] = _ => { var serverId = (string)_.serverId; var recordIndex = (int)_.recordIndex; var server = stumpsHost.FindServer(serverId); var record = server.Recordings.FindAt(recordIndex); var model = new RecordingDetailsModel { Index = recordIndex, RequestBody = string.Empty, RequestBodyIsImage = record.Request.BodyType == HttpBodyClassification.Image, RequestBodyIsText = record.Request.BodyType == HttpBodyClassification.Text, RequestBodyLength = record.Request.BodyLength, RequestBodyUrl = "/api/proxy/" + serverId + "/recording/" + recordIndex + "/request", RequestHttpMethod = record.Request.HttpMethod, RequestRawUrl = record.Request.RawUrl, RequestDate = record.ReceivedDate, ResponseBody = string.Empty, ResponseBodyIsImage = record.Response.BodyType == HttpBodyClassification.Image, ResponseBodyIsText = record.Response.BodyType == HttpBodyClassification.Text, ResponseBodyLength = record.Response.BodyLength, ResponseBodyUrl = "/api/proxy/" + serverId + "/recording/" + recordIndex + "/response", ResponseStatusCode = record.Response.StatusCode, ResponseStatusDescription = record.Response.StatusDescription }; model.RequestBody = record.Request.BodyType == HttpBodyClassification.Text ? record.Request.GetBodyAsString() : string.Empty; model.ResponseBody = record.Response.BodyType == HttpBodyClassification.Text ? record.Response.GetBodyAsString() : string.Empty; model.RequestHeaders = GenerateHeaderModels(record.Request); model.ResponseHeaders = GenerateHeaderModels(record.Response); return(Response.AsJson(model)); }; Get["/api/proxy/{serverId}/recording/{recordIndex}/request"] = _ => { var serverId = (string)_.serverId; var recordIndex = (int)_.recordIndex; var environment = stumpsHost.FindServer(serverId); var record = environment.Recordings.FindAt(recordIndex); var ms = new System.IO.MemoryStream(record.Request.GetBody()); return(Response.FromStream(ms, record.Request.Headers["Content-Type"])); }; Get["/api/proxy/{serverId}/recording/{recordIndex}/response"] = _ => { var serverId = (string)_.serverId; var recordIndex = (int)_.recordIndex; var server = stumpsHost.FindServer(serverId); var record = server.Recordings.FindAt(recordIndex); var ms = new System.IO.MemoryStream(record.Response.GetBody()); return(Response.FromStream(ms, record.Response.Headers["Content-Type"])); }; Get["/api/proxy/{serverId}/recording/status"] = _ => { var serverId = (string)_.serverId; var server = stumpsHost.FindServer(serverId); var model = new RecordStatusModel { RecordTraffic = server.RecordTraffic }; return(Response.AsJson(model)); }; Put["/api/proxy/{serverId}/recording/status"] = _ => { var serverId = (string)_.serverId; var server = stumpsHost.FindServer(serverId); var model = this.Bind <RecordStatusModel>(); if (model.RecordTraffic) { server.Recordings.Clear(); } server.RecordTraffic = model.RecordTraffic; return(Response.AsJson(model)); }; }