protected override void Inject(Slot source, object target) { MappingHelper.MapMatchingProperties(target, source); var fileSize = target.GetType().GetProperty("FileSize", BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance); var nzbName = target.GetType().GetProperty("NzbName", BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance); if (fileSize == null) { return; } if (nzbName == null) { return; } var fileSizeVal = MemorySizeConverter.ConvertToMb(source.size); if (fileSizeVal == default(double)) { return; } fileSize.SetValue(target, fileSizeVal.ToString(CultureInfo.CurrentUICulture)); nzbName.SetValue(target, source.nzb_name); }
private IQueryable <NzbGetHistoryViewModel> GetHistory() { try { var formattedUri = UrlHelper.ReturnUri(Settings.IpAddress, Settings.Port).ToString(); var history = Api.GetNzbGetHistory(formattedUri, Settings.Username, Settings.Password); var items = new List <NzbGetHistoryViewModel>(); foreach (var result in history.result) { var singleItem = new NzbGetHistoryViewModel(); var mappedResult = (NzbGetHistoryViewModel)singleItem.InjectFrom(new NzbGetHistoryMapper(), result); if (!string.IsNullOrEmpty(mappedResult.FileSize)) { long newFileSize; long.TryParse(mappedResult.FileSize, out newFileSize); mappedResult.FileSize = MemorySizeConverter.SizeSuffixMb(newFileSize); } items.Add(mappedResult); } return(items.AsQueryable()); } catch (Exception e) { Logger.Error(e.Message, e); return(new List <NzbGetHistoryViewModel>().AsQueryable()); } }
public void GetNzbGetTabDownloads() { var mockNzbGet = new Mock <ISettingsService <NzbGetSettingsDto> >(); var mockSab = new Mock <ISettingsService <SabNzbdSettingsDto> >(); var logger = new Mock <ILogger>(); var nzbGetSettings = F.Build <NzbGetSettingsDto>().With(x => x.Enabled).Create(); var nzbList = F.Create <NzbGetList>(); var status = F.Create <NzbGetStatus>(); mockNzbGet.Setup(x => x.GetSettings()).Returns(nzbGetSettings).Verifiable(); ThirdPartyApi.Setup(x => x.GetNzbGetList(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(nzbList).Verifiable(); ThirdPartyApi.Setup(x => x.GetNzbGetStatus(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(status).Verifiable(); _controller = new DashboardController(HardwareServiceMock.Object, ThirdPartyApi.Object, logger.Object, mockNzbGet.Object, mockSab.Object, NzbDashSettings.Object); var result = (PartialViewResult)_controller.GetTabDownloads(); var model = (TabDownloadViewModel)result.Model; Assert.That(model.Application, Is.EqualTo("NzbGet")); Assert.That(model.DownloadSpeed, Is.EqualTo(MemorySizeConverter.SizeSuffix(status.Result.DownloadRate / 1024))); Assert.That(model.Downloads.Count, Is.EqualTo(nzbList.result.Count)); Assert.That(model.Downloads[0].DownloadName, Is.EqualTo(nzbList.result[0].NZBName)); Assert.That(model.Downloads[0].DownloadPercentage, Is.Not.Null); Assert.That(model.Downloads[0].Status, Is.Not.Null); Assert.That(model.Downloads[0].ProgressBarClass, Is.Not.Null); }
public void SabNzbdHistoryMapper() { var f = new Fixture(); var source = f.Build <Slot>().With(x => x.size, "20 MB").Create(); var target = new NzbGetHistoryViewModel(); target.InjectFrom(new SabNzbdHistoryMapper(), source); Assert.That(target.Id, Is.EqualTo(source.id)); Assert.That(target.NzbName, Is.EqualTo(source.nzb_name)); Assert.That(target.Status, Is.EqualTo(source.status)); Assert.That(target.FileSize, Is.EqualTo(MemorySizeConverter.ConvertToMb(source.size).ToString(CultureInfo.CurrentUICulture))); Assert.That(target.Id, Is.EqualTo(source.id)); Assert.That(target.Category, Is.EqualTo(source.category)); Assert.That(target.Category, Is.EqualTo(source.category)); }
public ActionResult GetNzbGetDownloadInformation() { if (!Settings.HasSettings) { ViewBag.Error = Resources.Resources.Settings_Missing_NzbGet; return(PartialView("DashletError")); } Logger.Trace("Getting Config"); var formattedUri = UrlHelper.ReturnUri(Settings.IpAddress, Settings.Port).ToString(); try { Logger.Trace("Getting NzbGetStatus"); var statusInfo = Api.GetNzbGetStatus(formattedUri, Settings.Username, Settings.Password); Logger.Trace("Getting Current NZBGetlist"); var downloadInfo = Api.GetNzbGetList(formattedUri, Settings.Username, Settings.Password); var downloadSpeed = statusInfo.Result.DownloadRate / 1024; var model = new DownloaderViewModel { Application = Applications.NzbGet, DownloadSpeed = MemorySizeConverter.SizeSuffix(downloadSpeed), DownloadItem = new List <DownloadItem>() }; var results = downloadInfo.result; Logger.Trace(string.Format("Results count : {0}", results.Count)); foreach (var result in results) { Logger.Trace(string.Format("Going through result {0}", result.NZBName)); var percentage = (result.DownloadedSizeMB / (result.RemainingSizeMB + (double)result.DownloadedSizeMB) * 100); Logger.Trace(string.Format("Percentage : {0}", percentage)); var status = EnumHelper <DownloadStatus> .Parse(result.Status); var progressBar = "progress-bar-danger"; if (status == DownloadStatus.PAUSED || status == DownloadStatus.QUEUED) { progressBar = "progress-bar-warning"; } if (status == DownloadStatus.DOWNLOADING) { progressBar = "progress-bar-success"; } model.DownloadItem.Add( new DownloadItem { FontAwesomeIcon = IconHelper.ChooseIcon(status), DownloadPercentage = Math.Ceiling(percentage).ToString(CultureInfo.CurrentUICulture), DownloadingName = result.NZBName, Status = status, NzbId = result.NZBID, ProgressBarClass = progressBar }); } return(PartialView("_Download", model)); } catch (Exception e) { Logger.Error(e.Message, e); ViewBag.Error = e.Message; return(PartialView("DashletError")); } }
public void SizeSuffixLong(long input, string expected) { var result = MemorySizeConverter.SizeSuffix(input); Assert.That(result, Is.EqualTo(expected)); }
public void ConvertToMbTest(string input, double expected) { var result = MemorySizeConverter.ConvertToMb(input); Assert.That(result, Is.EqualTo(expected)); }
public ActionResult GetSabNzbdDownloadInformation() { if (!Settings.HasSettings) { ViewBag.Error = Resources.Resources.Settings_Missing_SabNzb; return(PartialView("DashletError")); } Logger.Trace("Getting Config"); var formattedUri = UrlHelper.ReturnUri(Settings.IpAddress, Settings.Port).ToString(); try { Logger.Trace("Getting GetSabNzbdQueue"); var statusInfo = Api.GetSabNzbdQueue(formattedUri, Settings.ApiKey); var downloadSpeed = statusInfo.kbpersec; var model = new DownloaderViewModel { Application = Applications.SabNZBD, DownloadSpeed = MemorySizeConverter.SizeSuffix((long)downloadSpeed), DownloadItem = new List <DownloadItem>() }; var results = statusInfo.jobs; Logger.Trace(string.Format("Results count : {0}", results.Count)); foreach (var result in results) { Logger.Trace(string.Format("Going through result {0}", result.id)); var percentage = (result.mbleft / result.mb * 100); Logger.Trace(string.Format("Percentage : {0}", percentage)); var status = EnumHelper <DownloadStatus> .Parse(statusInfo.paused? "PAUSED" : "DOWNLOADING"); var progressBar = Bootstrap.ProgressBarDanger; if (status == DownloadStatus.PAUSED || status == DownloadStatus.QUEUED) { progressBar = Bootstrap.ProgressBarWarning; } if (status == DownloadStatus.DOWNLOADING) { progressBar = Bootstrap.ProgressBarSuccess; } int nzbId; int.TryParse(result.id, out nzbId); model.DownloadItem.Add(new DownloadItem { FontAwesomeIcon = IconHelper.ChooseIcon(status), DownloadPercentage = Math.Ceiling(percentage).ToString(CultureInfo.CurrentUICulture), DownloadingName = result.filename, Status = status, NzbId = nzbId, ProgressBarClass = progressBar }); } return(PartialView("_Download", model)); } catch (Exception e) { Logger.Error(e.Message, e); ViewBag.Error = e.Message; return(PartialView("DashletError")); } }
public ActionResult GetTabDownloads() { var model = new TabDownloadViewModel(); var sab = Sab.GetSettings(); var nzb = NzbGet.GetSettings(); if (sab != null) { if (sab.HasSettings && sab.Enabled) { var formattedUri = UrlHelper.ReturnUri(sab.IpAddress, sab.Port).ToString(); var items = Api.GetSabNzbdQueue(formattedUri, sab.ApiKey); model.DownloadSpeed = MemorySizeConverter.SizeSuffix((long)items.kbpersec); model.Application = "Sabnzbd"; foreach (var dl in items.jobs) { var percentage = (dl.mbleft / dl.mb * 100); Logger.Trace(string.Format("Percentage : {0}", percentage)); var status = EnumHelper <DownloadStatus> .Parse(items.paused? "PAUSED" : "DOWNLOADING"); var progressBar = Bootstrap.ProgressBarDanger; if (status == DownloadStatus.PAUSED || status == DownloadStatus.QUEUED) { progressBar = Bootstrap.ProgressBarWarning; } if (status == DownloadStatus.DOWNLOADING) { progressBar = Bootstrap.ProgressBarSuccess; } model.Downloads.Add( new TabDownloadItems { DownloadName = dl.filename, Status = status.ToString(), DownloadPercentage = percentage, ProgressBarClass = progressBar }); } } } if (nzb != null) { if (nzb.HasSettings && nzb.Enabled) { var formattedUri = UrlHelper.ReturnUri(nzb.IpAddress, nzb.Port).ToString(); var statusInfo = Api.GetNzbGetStatus(formattedUri, nzb.Username, nzb.Password); var nzbItem = Api.GetNzbGetList(formattedUri, nzb.Username, nzb.Password); model.DownloadSpeed = MemorySizeConverter.SizeSuffix(statusInfo.Result.DownloadRate / 1024); model.Application = "NzbGet"; foreach (var dl in nzbItem.result) { var percentage = (dl.DownloadedSizeMB / (dl.RemainingSizeMB + (double)dl.DownloadedSizeMB) * 100); Logger.Trace(string.Format("Percentage : {0}", percentage)); var status = EnumHelper <DownloadStatus> .Parse(dl.Status); var progressBar = "progress-bar-danger"; if (status == DownloadStatus.PAUSED || status == DownloadStatus.QUEUED) { progressBar = "progress-bar-warning"; } if (status == DownloadStatus.DOWNLOADING) { progressBar = "progress-bar-success"; } model.Downloads.Add( new TabDownloadItems { DownloadName = dl.NZBName, Status = status.ToString(), DownloadPercentage = percentage, ProgressBarClass = progressBar }); } } } else { Logger.Trace("No settings found. Cannot display downloads on the Dashboard"); } return(PartialView("NavbarDownloads", model)); }