/// <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); }
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; }
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 } }
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); }
/// <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; } }
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(); }
/// <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; } }
/// <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(); }
public void Deserialize() { Domain.Configuration configuration = Domain.Configuration.Load(); }