public RipperBackgroundWorker(RipperService ripperService, ILogger logger) { _observer = new DiscChangeObservable().Subscribe(async disc => { await Task.Run(() => { if (disc.IsReady) { switch (disc.DriveFormat) { case "CDFS": ripperService.OnDiscInsertion(disc); break; case "UDF": logger.Information("A DVD of BluRay had been inserted. This is not yet supported."); break; default: logger.Information("An unknown disc format has been inserted in drive {drivename}: {driveformat}", disc.Name, disc.DriveFormat); break; } } else { ripperService.OnDiscEjected(disc); } }); }); }
private RipperViewModel GetRipperViewModel(RipperService service) { var status = service.GetCurrentStatus(); return(new RipperViewModel { Title = "Ripper", View = status == null ? "null" : JsonConvert.SerializeObject(status) }); }
public RipperModule(RipperService service, Persister <RipperSettings> persister) : base("ripper") { Get["/"] = x => View["index.cshtml", GetRipperViewModel(service)]; Post["/Cancel"] = x => { service.CancelRipping(); if (Context.IsAjaxRequest()) { return("ok"); } return(new RedirectResponse(ModulePath)); }; Post["/selectAlbum"] = x => { service.SelectAlbum(Request.Form.albumId); if (Context.IsAjaxRequest()) { return("ok"); } return(new RedirectResponse(ModulePath)); }; Get["/settings"] = x => View["settings.cshtml", new RipperSettingsViewModel { Title = "Ripper Settings", Settings = persister.Get() }]; Post["/settings"] = x => { if (Request.Form.Reset) { persister.Save(new RipperSettings()); } else { var currentSettings = persister.Get(); this.BindToAndValidate(currentSettings); if (this.ModelValidationResult.IsValid) { persister.Save(currentSettings); } else { return(View["settings.cshtml", new RipperSettingsViewModel { Title = "Ripper Settings", Settings = currentSettings }]); } } return(new RedirectResponse("settings")); }; }