public void ObjectTypeFolderNotFound()
        {
            var configuration = FolderConfiguration.FromFile("./Data/FolderConfiguration.json");

            configuration.Path = "Z:\\Dummy";
            Processor.ClientServerLoop(configuration);
        }
 public HiDriveSyncTask(FolderConfiguration folderConfiguration, IHiDriveClient hiDriveClient,
                        AccountService accountService)
 {
     _folderConfiguration = folderConfiguration;
     _hiDriveClient       = hiDriveClient;
     _accountService      = accountService;
 }
Example #3
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            FolderConfiguration save = new FolderConfiguration();

            save.Title   = txtTitle.Text;
            save.Enabled = chkEnabled.Checked;

            foreach (DataGridViewRow row in grdFolders.Rows)
            {
                if (row.Cells["Path"].Value == null || string.IsNullOrWhiteSpace(row.Cells["Path"].Value.ToString()))
                {
                    continue;
                }

                FolderItemConfiguration config = new FolderItemConfiguration();
                config.Path      = row.Cells["Path"].Value.ToString();
                config.Filter    = row.Cells["Filter"].Value.ToString();
                config.Log       = row.Cells["Log"].Value.ToString();
                config.Recursive = row.Cells["Recursive"].Value == null ? false : row.Cells["Recursive"].Value.ToString().Equals("true", StringComparison.CurrentCultureIgnoreCase);

                save.Folders.Add(config);
            }

            save.Save();

            this.Close();
        }
Example #4
0
        public Manager()
        {
            var folderConfiguration = new FolderConfiguration();
            var fileService         = new FileService(folderConfiguration);

            _mediaService = new MediaService(fileService, folderConfiguration);
        }
Example #5
0
        public void AddToMonitor(FolderConfiguration folder)
        {
            FolderMonitorWorker worker = new FolderMonitorWorker(folder);

            worker.Start();
            monitors.Add(folder.FullPath, worker);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="FolderViewViewModell"/> class.
        /// </summary>
        /// <param name="parent">The parent viewmodel.</param>
        /// <param name="basePath">The base path this viewmodel is based on.</param>
        public FolderViewModel(NavigateableViewModelBase parent, string basePath)
            : base(parent)
        {
            m_basePath = basePath;

            // Set default folder configuration
            m_folderConfig = FolderConfiguration.Default;
        }
 public void Save(FolderConfiguration folderConfiguration)
 {
     if (_configs.Contains(folderConfiguration))
     {
         Save();
         _configurationUpdatedSubject.OnNext(folderConfiguration);
     }
 }
Example #8
0
        public void ChangeMonitor(string path)
        {
            RemoveMonitor(path);

            FolderConfiguration folder = FolderConfiguration.Deserialize(path);

            AddToMonitor(folder);
        }
 public void DeleteConfig(FolderConfiguration folderConfiguration)
 {
     if (_configs.Remove(folderConfiguration))
     {
         Save();
         _configurationDeletedSubject.OnNext(folderConfiguration);
     }
 }
        public void Update(FolderConfiguration folderConfiguration)
        {
            Log.Debug("Update HiDrive Sync task for {@folder}", _folderConfiguration);
            _schedule       = CrontabSchedule.Parse(folderConfiguration.Schedule);
            _nextOccurrence = _schedule.GetNextOccurrence(DateTime.Now);
            Log.Debug("Next Occurrence is now: {@NextOccurence}", _nextOccurrence);

            _folderConfiguration = folderConfiguration;
        }
Example #11
0
 public FileService(IHostingEnvironment appEnvironment, IOptions <MediaSettings> mediaOptions,
                    FolderConfiguration folderConfiguration, ILogger <FileService> logger)
 {
     MediaOptions         = mediaOptions.Value;
     AppEnvironment       = appEnvironment;
     _folderConfiguration = folderConfiguration;
     _logger = logger;
     InitConfiguration();
 }
Example #12
0
        static void Main(string[] args)
        {
            if (args.Length > 0 && (args[0].Equals("gui", StringComparison.CurrentCultureIgnoreCase) || args[0].Equals("g", StringComparison.CurrentCultureIgnoreCase)))
            {
                ConfigurationListWindow mainWindow = new ConfigurationListWindow();
                Application.Run(mainWindow);
                return;
            }

            FolderManager folder = new FolderManager();
            FolderConfigurationManager config = new FolderConfigurationManager();

            foreach (FolderConfiguration item in config.GetCurrentConfigurations())
            {
                folder.AddToMonitor(item);
            }

            config.OnConfigChanged((path, action) =>
            {
                try
                {
                    Console.WriteLine(action.ToString() + "> " + path);

                    switch (action)
                    {
                    case System.IO.WatcherChangeTypes.Created:
                        folder.AddToMonitor(FolderConfiguration.Deserialize(path));
                        break;

                    case System.IO.WatcherChangeTypes.Deleted:
                        folder.RemoveMonitor(path);
                        break;

                    case System.IO.WatcherChangeTypes.Changed:
                        folder.ChangeMonitor(path);
                        break;

                    case System.IO.WatcherChangeTypes.Renamed:
                        break;

                    case System.IO.WatcherChangeTypes.All:
                        break;

                    default:
                        break;
                    }
                }
                catch (Exception ex)
                {
                    string contentLog = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + " $ " + ex.Message + Environment.NewLine;
                    System.IO.File.AppendAllText("Log" + DateTime.Now.ToString("yyyy/MM/dd") + ".txt", contentLog);
                }
            });

            Console.ReadLine();
        }
        public NewEditMirrorForm(bool isNew, FolderConfiguration folderConfiguration)
        {
            InitializeComponent();

            Text = isNew ? "New mirror configuration" : "Edit mirror configuration";

            Configuration  = folderConfiguration;
            txtSource.Text = folderConfiguration.SourcePath;
            txtMirror.Text = folderConfiguration.MirrorPath;
        }
Example #14
0
        public IActionResult OnPostCreate()
        {
            if (!ModelState.IsValid)
            {
                Data.SmptAccounts = _accountService.Accounts.SmtpAccounts.Select(account =>
                                                                                 new SelectListItem(account.Label, account.Id.ToString()))
                                    .Concat(new[] { new SelectListItem("Add New", Guid.Empty.ToString()) }).ToList();
                Data.Accounts = new List <SelectListItem>
                {
                    new SelectListItem(_accountService.Accounts.HiDriveAccount.UserName,
                                       _accountService.Accounts.HiDriveAccount.AccountId)
                };

                return(Page());
            }

            if (Data.SmptAccountId == Guid.Empty.ToString() && Data.NewSmtpAccount != null)
            {
                var smtpAccount = new SmtpAccount
                {
                    Id       = Guid.NewGuid(),
                    Label    = Data.NewSmtpAccount.Label,
                    Server   = Data.NewSmtpAccount.Server,
                    Username = Data.NewSmtpAccount.Username,
                    Password = Data.NewSmtpAccount.Password,
                    EmailTo  = Data.NewSmtpAccount.EmailTo
                };
                _accountService.AddSmtpAccount(smtpAccount);
                Data.SmptAccountId = smtpAccount.Id.ToString();
            }

            Data.Id = Guid.NewGuid();

            var folderConfiguration = new FolderConfiguration
            {
                Id                        = Data.Id,
                Label                     = Data.Label,
                SourcePath                = Data.SourcePath,
                DestinationPath           = Data.DestinationPath,
                LogPath                   = Data.LogPath,
                LogLevel                  = Data.LogLevel,
                Schedule                  = Data.Schedule,
                AccountId                 = Data.AccountId,
                NotificationConfiguration = new FolderNotificationConfiguration
                {
                    EmailConfigurationId = Guid.Parse(Data.SmptAccountId),
                    SendEmail            = Data.SendEmail,
                    SendEmailOnlyOnError = Data.SendEmailOnlyOnError
                }
            };

            _folderConfigService.AddFolderConfig(folderConfiguration);

            return(RedirectToPage("/Index"));
        }
Example #15
0
        public void PostFolderMetaData()
        {
            var configuration = FolderConfiguration.FromFile("/../../Data/FolderConfiguration.json");
            var request       = Utilities.FileSystem.LoadFolderMetaData(configuration);

            request = Processor.AddCommonRequestFields(configuration, request);
            Assert.AreEqual(configuration.DerivedMachineHash, request[Constants.Configuration.DerivedMachineHash].ToString());
            Assert.AreEqual(configuration.LocationKey, request[Constants.Configuration.LocationKey].ToString());
            Assert.AreEqual(configuration.SequenceId, request[Constants.Configuration.SequenceId].ToString());
            var response = RestClient.PostJson <dynamic>(configuration.Uri, request);

            Assert.IsNotNull(response);
        }
        public List <FolderConfiguration> GetCurrentConfigurations()
        {
            List <FolderConfiguration> ret = new List <FolderConfiguration>();

            string[] files = System.IO.Directory.GetFiles(ConfigurationData.ConfiurationFolder);

            foreach (string item in files)
            {
                ret.Add(FolderConfiguration.Deserialize(item));
            }

            return(ret);
        }
Example #17
0
        public static IDictionary <string, object> LoadFolderMetaData(FolderConfiguration configuration)
        {
            var files = Directory.EnumerateFiles(configuration.Path, "*.*", SearchOption.TopDirectoryOnly).Select(
                file => new Dictionary <string, object>()
            {
                { Constants.Configuration.Path, file }
            }
                );
            var subFolders = Directory.EnumerateDirectories(configuration.Path, "*", SearchOption.TopDirectoryOnly).Select(folder =>
                                                                                                                           new Dictionary <string, object>()
            {
                { Constants.Configuration.Path, folder }
            }
                                                                                                                           );

            var lastModified = new DirectoryInfo(configuration.Path).GetDirectories("*", SearchOption.AllDirectories)
                               .OrderByDescending(d => d.LastWriteTimeUtc)
                               .Select(d => d.LastWriteTimeUtc)
                               .FirstOrDefault();

            var fileSizes = Directory.EnumerateFiles(configuration.Path, "*.*", SearchOption.AllDirectories)
                            .AsParallel()
                            .Select(file =>
            {
                try
                {
                    var size = FileSystem.GetFileInfo(file).Length;
                    return(size);
                }
                catch (Exception ex)
                {
                    Utilities.Logger.Log(ex);
                    return(0.0);
                }
            });

            return(new Dictionary <string, object>()
            {
                { Constants.Configuration.ObjectType, Constants.ObjectType.Folder },
                { Constants.Configuration.Path, configuration.Path },
                { Constants.Configuration.FolderSize, fileSizes.Sum() },
                { Constants.Configuration.Modified, lastModified },
                { Constants.Configuration.SubFoldersCount, subFolders.Count() },
                { Constants.Configuration.SubFolders, subFolders },
                { Constants.Configuration.FilesCount, files.Count() },
                { Constants.Configuration.Files, files }
            });
        }
        public void LoadFolderInfo()
        {
            var config = FolderConfiguration.FromFile("/../../Data/FolderConfiguration.json");
            var info   = Utilities.FileSystem.LoadFolderMetaData(config);

            Assert.AreEqual(Constants.ObjectType.Folder, info[Constants.Configuration.ObjectType]);
            Assert.IsTrue(((double)info[Constants.Configuration.FolderSize]) > 0);
            Assert.IsTrue(((int)info[Constants.Configuration.SubFoldersCount]) > 0);
            Assert.IsTrue(((int)info[Constants.Configuration.FilesCount]) > 0);
            Assert.IsTrue(((IEnumerable <IDictionary <string, object> >)info[Constants.Configuration.Files]).Count() > 0);
            Assert.AreEqual(config.Path, info[Constants.Configuration.Path]);
            IEnumerable <IDictionary <string, object> > subFolders = info[Constants.Configuration.SubFolders] as IEnumerable <IDictionary <string, object> >;

            Assert.IsNotNull(subFolders.Where(sf => (string)sf[Constants.Configuration.Path] == config.Path + @"\Help"));
            Assert.IsTrue(((DateTime)info[Constants.Configuration.Modified]) > DateTime.MinValue);
        }
Example #19
0
        public void SetItem(FolderConfiguration folderConfiguration)
        {
            txtTitle.Text                  = folderConfiguration.Title;
            chkEnabled.Checked             = folderConfiguration.Enabled;
            txtTitle.Enabled               = false;
            grdFolders.AutoGenerateColumns = false;

            foreach (var config in folderConfiguration.Folders)
            {
                int row = grdFolders.Rows.Add();
                grdFolders.Rows[row].Cells["Path"].Value      = config.Path;
                grdFolders.Rows[row].Cells["Filter"].Value    = config.Filter;
                grdFolders.Rows[row].Cells["Log"].Value       = config.Log;
                grdFolders.Rows[row].Cells["Recursive"].Value = config.Recursive;
            }
        }
Example #20
0
        public void CreateFolders(FolderConfiguration config, string mediaFolder)
        {
            IList <string> paths = new List <string>();
            var            type  = config.GetType();

            foreach (var property in type.GetProperties()
                     .Where(x => x.CustomAttributes.Any(y => y.AttributeType == typeof(FolderAttribute))).ToList())
            {
                var t          = property.GetValue(config);
                var baseFolder = (BaseFolder)property.GetValue(config);
                GetSubFolder(baseFolder, paths);
            }
            foreach (var path in paths)
            {
                Directory.CreateDirectory(Path.Combine(mediaFolder, path));
            }
        }
Example #21
0
        private void btnEdit_Click(object sender, EventArgs e)
        {
            var item          = lstFolders.SelectedItems[0];
            var configuration = new FolderConfiguration
            {
                SourcePath = item.SubItems[0].Text,
                MirrorPath = item.SubItems[1].Text
            };
            var form = new NewEditMirrorForm(false, configuration);

            if (form.ShowDialog() == DialogResult.OK)
            {
                var folder = form.Configuration;
                item.SubItems[0].Text = folder.SourcePath;
                item.SubItems[1].Text = folder.MirrorPath;
            }
        }
        public void LoadFolderInfoNotFound()
        {
            var config = FolderConfiguration.FromFile("/../../Data/FolderConfiguration.json");

            config.Path = "Z:\\Dummy";
            var info = Utilities.FileSystem.LoadFolderMetaData(config);

            Assert.AreEqual(Constants.ObjectType.Folder, info[Constants.Configuration.ObjectType]);
            Assert.IsTrue(((double)info[Constants.Configuration.FolderSize]) == 0);
            Assert.IsTrue(((int)info[Constants.Configuration.SubFoldersCount]) == 0);
            Assert.IsTrue(((int)info[Constants.Configuration.FilesCount]) == 0);
            Assert.IsNull(info[Constants.Configuration.Files]);
            Assert.AreEqual(config.Path, info[Constants.Configuration.Path]);
            Assert.IsNull(info[Constants.Configuration.SubFolders]);
            Assert.IsNull(info[Constants.Configuration.Modified]);
            Assert.AreEqual((int)info[Constants.Configuration.ExitCode], 1);
            Assert.IsTrue(((string)info[Constants.Configuration.ErrorMessage]).Length > 0);
        }
        private void ConfigurationListWindow_Load(object sender, EventArgs e)
        {
            FolderConfigurationManager folders = new FolderConfigurationManager();

            grdConfigurations.DataSource = folders.GetCurrentConfigurations();

            folders.OnConfigChanged((file, action) =>
            {
                switch (action)
                {
                case System.IO.WatcherChangeTypes.Created:
                    List <FolderConfiguration> obj = ((List <FolderConfiguration>)grdConfigurations.DataSource);
                    obj.Add(FolderConfiguration.Deserialize(file));
                    grdConfigurations.Invoke(new Action(() => { grdConfigurations.DataSource = null; grdConfigurations.DataSource = obj; }));
                    break;

                case System.IO.WatcherChangeTypes.Deleted:
                    List <FolderConfiguration> objD = ((List <FolderConfiguration>)grdConfigurations.DataSource);
                    grdConfigurations.Invoke(new Action(() => { grdConfigurations.DataSource = null; grdConfigurations.DataSource = objD.Where(q => q.FullPath != file).ToList(); }));
                    break;

                case System.IO.WatcherChangeTypes.Changed:
                    if (((List <FolderConfiguration>)grdConfigurations.DataSource).Count(q => q.FullPath == file) > 0)
                    {
                        List <FolderConfiguration> objC = ((List <FolderConfiguration>)grdConfigurations.DataSource);
                        int index   = objC.IndexOf(objC.First(q => q.FullPath == file));
                        objC[index] = FolderConfiguration.Deserialize(file);
                        grdConfigurations.Invoke(new Action(() => { grdConfigurations.DataSource = null; grdConfigurations.DataSource = objC; }));
                    }
                    break;

                case System.IO.WatcherChangeTypes.Renamed:
                    grdConfigurations.Invoke(new Action(() => { grdConfigurations.DataSource = null; grdConfigurations.DataSource = folders.GetCurrentConfigurations(); }));
                    break;

                case System.IO.WatcherChangeTypes.All:
                    break;

                default:
                    break;
                }
            });
        }
        public void PostFolderMetaData()
        {
            var configuration = FolderConfiguration.FromFile("./Data/FolderConfiguration.json");
            var request       = Processor.LoadFolderMetaData(configuration);

            #region Validate Request
            validateCommonRequestFields(request);
            Assert.AreEqual(Constants.ObjectType.Folder, request[Constants.Configuration.ObjectType].ToString());
            Assert.IsTrue(
                string.Compare(
                    request[Constants.Configuration.Path].ToString(),
                    configuration.Path, System.StringComparison.CurrentCultureIgnoreCase) == 0
                );
            Assert.IsTrue((int.Parse(request[Constants.Configuration.FolderSize].ToString())) > 0);
            Assert.IsTrue((int.Parse(request[Constants.Configuration.SubFoldersCount].ToString())) > 0);
            Assert.IsTrue((int.Parse(request[Constants.Configuration.FilesCount].ToString())) > 0);
            Assert.IsTrue(
                string.Compare(
                    request[Constants.Configuration.Path].ToString(),
                    configuration.Path, System.StringComparison.CurrentCultureIgnoreCase) == 0
                );
            Assert.IsTrue(((DateTime)request[Constants.Configuration.Modified]) > DateTime.MinValue);
            Assert.IsTrue(
                ((IEnumerable <IDictionary <string, object> >)request[Constants.Configuration.SubFolders]).Count() > 0
                );
            Assert.IsTrue(
                ((IEnumerable <IDictionary <string, object> >)request[Constants.Configuration.Files]).Count() > 0
                );
            #endregion

            var response = Utilities.RestClient.PostJson <Dictionary <string, object> >(configuration.Uri, request);

            #region Validate Response
            Assert.AreEqual(Constants.ObjectType.Folder, response[Constants.Configuration.ObjectType].ToString());
            Assert.IsFalse(string.IsNullOrWhiteSpace(response[Constants.Configuration.ThreadTimeToLiveSec].ToString()));
            Assert.IsFalse(string.IsNullOrWhiteSpace(response[Constants.Configuration.Path].ToString()));
            validateCommonResponseFields(response);
            #endregion
        }
Example #25
0
        private void SaveConfiguration()
        {
            var configuration = new Configuration();

            configuration.RunAppOnStartup = chkOnWindowsStart.Checked;
            configuration.MirrorInterval  = nudMirrorEvery.Value;

            configuration.MirrorConfiguration.DeleteFromDest = chkDeleteFromDestination.Checked;

            foreach (ListViewItem item in lstFolders.Items)
            {
                var folderConfiguration = new FolderConfiguration
                {
                    SourcePath = item.SubItems[0].Text,
                    MirrorPath = item.SubItems[1].Text
                };

                configuration.Folders.Add(folderConfiguration);
            }

            Configuration = configuration;
        }
 public FolderMonitorWorker(FolderConfiguration configuration)
 {
     Configuration = configuration;
 }
 /// <summary>
 /// Prevents a default instance of the <see cref="FolderViewModel"/> class from being created.
 /// </summary>
 private FolderViewModel()
     : base(null)
 {
     m_basePath = string.Empty;
     m_folderConfig = FolderConfiguration.Default;
 }
Example #28
0
 public MediaService(FileService fileManager, FolderConfiguration folderConfiguration, ILogger <MediaService> logger)
 {
     _fileManager         = fileManager;
     _folderConfiguration = folderConfiguration;
     _logger = logger;
 }
Example #29
0
 public FolderConfiguration(FolderConfiguration other)
 {
     this.ID                   = other.ID;
     this.IsWatched            = other.IsWatched;
     this.NotificationsEnabled = other.NotificationsEnabled;
 }
        public void ObjectTypeFolder()
        {
            var configuration = FolderConfiguration.FromFile("./Data/FolderConfiguration.json");

            Processor.ClientServerLoop(configuration);
        }
Example #31
0
 public MediaService(FileService fileManager, FolderConfiguration folderConfiguration)
 {
     _fileManager         = fileManager;
     _folderConfiguration = folderConfiguration;
 }
 /// <summary>
 /// Unloads all inner configuration.
 /// </summary>
 protected override void UnloadPreviewContentInternal()
 {
     m_folderConfig = null;
 }
 public FolderConfiguration(FolderConfiguration other)
 {
     this.ID = other.ID;
     this.IsWatched = other.IsWatched;
     this.NotificationsEnabled = other.NotificationsEnabled;
 }
Example #34
0
 public FileService(FolderConfiguration folderConfiguration)
 {
     _folderConfiguration = folderConfiguration;
     InitConfiguration();
 }
        /// <summary>
        /// Loads the inner configuration internal asynchronous.
        /// </summary>
        protected override async Task LoadPreviewContentInternalAsync(CancellationToken cancelToken)
        {
            if (string.IsNullOrEmpty(m_basePath)) { return; }

            // Load configuration object
            string configFilePath = Path.Combine(m_basePath, Constants.BROWSING_FOLDER_CONFIG_FILE);
            if (File.Exists(configFilePath))
            {
                try
                {
                    m_folderConfig = await CommonTools.DeserializeFromXmlFileAsync<FolderConfiguration>(configFilePath);
                }
                catch (Exception) { }
            }
            if (m_folderConfig == null) { m_folderConfig = FolderConfiguration.Default; }
        }