Exemplo n.º 1
0
        /// <summary>
        /// Load local configuration settings
        /// In case of exception cannot continues
        /// </summary>
        /// <returns></returns>
        private static Domain.Configuration LoadLocalConfiguration(string configurationFilePath)
        {
            try
            {
                System.Diagnostics.Stopwatch stopWatch = System.Diagnostics.Stopwatch.StartNew();
                Utilities.Logger.Log(NLog.LogLevel.Trace, Resources.Messages.StartReadingLocalConfiguration, configurationFilePath);
                Domain.Configuration configuration = Utilities.FileSystem.ReadTextFile(configurationFilePath).Deserialize <Domain.Configuration>();

                if (string.IsNullOrWhiteSpace(configuration.InstallationId))
                {
                    Configuration._installationId = configuration.InstallationId = Guid.NewGuid().ToString();
                    configuration.Save(configurationFilePath);
                }
                else
                {
                    Configuration._installationId = configuration.InstallationId;
                }

                Utilities.Logger.Log(NLog.LogLevel.Trace, Resources.Messages.EndOfExecution, "Configuration.LoadLocalConfiguration", Logger.GetTimeElapsed(stopWatch));
                return(configuration);
            }
            catch (Exception ex)
            {
                Utilities.Logger.Log(ex);
                throw ex;
            }
        }
 public SelectFileRequest(Domain.Configuration configuration, Domain.FileSettings fileSettings, IEnumerable <Domain.File> fileInfos)
 {
     this.InstallationId = configuration.InstallationId;
     this.LocationKey    = configuration.LocationKey;
     this.FolderName     = fileSettings.Name;
     this.Files          = new HashSet <File>(fileInfos);
 }
Exemplo n.º 3
0
 public PostFileRequest(Domain.Configuration configuration, Domain.File file)
 {
     LocationKey   = configuration.LocationKey;
     SequenceId    = configuration.SequenceId;
     FileContent   = file.Content;
     FileSizeBytes = file.SizeBytes;
     Name          = file.Name;
     FileTimeStamp = file.TimeStampUtc;
     SequenceId    = configuration.SequenceId;
 }
Exemplo n.º 4
0
 internal void Process(object source, ElapsedEventArgs e)
 {
     try
     {
         Domain.Configuration configuration = Domain.Configuration.Load();
         TWIConnect.Client.Processor.Run(configuration);
         this.Timer.Interval = ((configuration != null) ? configuration.ScheduledIntervalSec : defaultIntervalSec) * 1000;
     }
     catch
     {
         //No action on failure - retry later
     }
 }
Exemplo n.º 5
0
        internal static File Load(Domain.Configuration configuration, Domain.FileSettings fileSettings)
        {
            System.IO.FileInfo fileInfo = Utilities.FileSystem.GetFileInfo(fileSettings.Name);

            //Check size limit if applicable
            int sizeMb = Utilities.FileSystem.GetFileSizeInMb(fileInfo);

            if (
                (!fileSettings.IgnoreSizeLimit) &&
                (sizeMb > configuration.FileSizeLimitMb))
            {
                throw new Exception(string.Format(Resources.Messages.FileSizeExceeded, fileSettings.Name, sizeMb, configuration.FileSizeLimitMb));
            }

            //Check immutability interval if applicable
            double immutabilitySec = DateTime.UtcNow.Subtract(fileInfo.LastWriteTimeUtc).TotalSeconds;

            if (
                (!fileSettings.IgnoreImmutabilityInterval) &&
                (configuration.ImmutabilityIntervalSec <= 0) &&
                (immutabilitySec < configuration.ImmutabilityIntervalSec)
                )
            {
                throw new Exception(string.Format(Resources.Messages.FileImmutabilityIntervalNotReached, fileSettings.Name, immutabilitySec, configuration.ImmutabilityIntervalSec));
            }

            //Check SendVersionAfterTimeStampUtc has been reached
            if (
                (fileSettings.SendVersionAfterTimeStampUtc.HasValue) &&
                (fileSettings.SendVersionAfterTimeStampUtc != DateTime.MinValue) &&
                (fileInfo.LastWriteTimeUtc < fileSettings.SendVersionAfterTimeStampUtc)
                )
            {
                throw new Exception(string.Format(Resources.Messages.SendVersionAfterTimeStampUtcNotReached, fileSettings.Name, fileInfo.LastWriteTimeUtc, fileSettings.SendVersionAfterTimeStampUtc));
            }

            //Load file content
            Domain.File file = new File()
            {
                Content      = Utilities.FileSystem.ReadFileAsBase64String(fileSettings.Name),
                Name         = fileSettings.Name,
                SizeBytes    = fileInfo.Length,
                TimeStampUtc = fileInfo.LastAccessTimeUtc
            };

            return(file);
        }
Exemplo n.º 6
0
 /// <summary>
 /// Try loading remote configuration
 /// In case of exception return null
 /// </summary>
 /// <param name="localConfiguration"></param>
 /// <returns></returns>
 private void TryLoadRemoteConfiguration(Domain.Configuration localConfiguration)
 {
     try
     {
         System.Diagnostics.Stopwatch stopWatch = System.Diagnostics.Stopwatch.StartNew();;
         Utilities.Logger.Log(NLog.LogLevel.Trace, Resources.Messages.StartReadingRemoteConfiguration, localConfiguration.UrlPostFile);
         Domain.ConfigurationRequest  request = new ConfigurationRequest(localConfiguration);
         Domain.ConfigurationResponse configurationResponse = new RestClient(localConfiguration).GetRemoteConfiguration(request);
         Utilities.Logger.Log(NLog.LogLevel.Trace, Resources.Messages.EndOfExecution, "Configuration.TryLoadRemoteConfiguration", Logger.GetTimeElapsed(stopWatch));
         this._configurationResponse = configurationResponse;
     }
     catch (Exception ex)
     {
         Utilities.Logger.Log(ex);
         this._configurationResponse = null;
     }
 }
Exemplo n.º 7
0
        public void SerializeConfiguration()
        {
            Domain.Configuration configuration = new Domain.Configuration
            {
                LocationKey = "qqq",
                Files       = new HashSet <Domain.FileSettings>
                {
                    new Domain.FileSettings
                    {
                        Name = "aaa"
                    },
                    new Domain.FileSettings
                    {
                        Name = "aaa"
                    },
                }
            };

            string xml = configuration.Serialize();
        }
Exemplo n.º 8
0
        /// <summary>
        /// Load local configuration
        /// Using local configuration load remote configuration
        /// Update and Save local configuration
        /// </summary>
        /// <returns></returns>
        public static Domain.Configuration Load()
        {
            try
            {
                string configurationFilePath            = GetConfigurationFilePath();
                Domain.Configuration localConfiguration = LoadLocalConfiguration(configurationFilePath);

                Utilities.Threading.AsyncCallWithTimeout
                (
                    () => localConfiguration.TryLoadRemoteConfiguration(localConfiguration),
                    localConfiguration.ThreadTimeToLiveSec * 1000
                );

                localConfiguration.UpdateLocalConfiguration(localConfiguration._configurationResponse);
                return(localConfiguration);
            }
            catch (Exception ex)
            {
                Utilities.Logger.Log(ex);
                throw ex;
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Save configuration file - exclude list of files to upload.
        /// </summary>
        internal void Save(string configurationFilePath)
        {
            object fileLock = new object();

            try
            {
                System.Diagnostics.Stopwatch stopWatch = System.Diagnostics.Stopwatch.StartNew();
                Utilities.Logger.Log(NLog.LogLevel.Trace, Resources.Messages.StartSavingLocalConfiguration, configurationFilePath);

                //Shallow copy to remove File Settings from saved file
                Domain.Configuration configToSave = this.MemberwiseClone() as Domain.Configuration;

                lock (fileLock)
                {
                    Utilities.FileSystem.WriteTextFile(configurationFilePath, configToSave.Serialize());
                }
                Utilities.Logger.Log(NLog.LogLevel.Trace, Resources.Messages.EndOfExecution, "Configuration.Save", Logger.GetTimeElapsed(stopWatch));
            }
            catch (Exception ex)
            {
                Utilities.Logger.Log(ex);
                throw ex;
            }
        }
 public override void SetUp()
 {
     base.SetUp();
     configuration = new Domain.Configuration();
 }
Exemplo n.º 11
0
 public void Deserialize()
 {
     Domain.Configuration configuration = Domain.Configuration.Load();
 }