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);
                    }
                });
            });
        }
Example #2
0
        private RipperViewModel GetRipperViewModel(RipperService service)
        {
            var status = service.GetCurrentStatus();

            return(new RipperViewModel
            {
                Title = "Ripper",
                View = status == null ? "null" : JsonConvert.SerializeObject(status)
            });
        }
Example #3
0
        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"));
            };
        }