/// <summary> /// Initializes a new instance of the <see cref="RuntimeInformation"/> <see langword="class"/>. /// </summary> /// <param name="assemblyInformationProvider">The <see cref="IAssemblyInformationProvider"/> to use.</param> /// <param name="serverPortProvider">The <see cref="IServerPortProvider"/> used to set the value of <see cref="ServerPort"/>.</param> /// <param name="testMerges">An <see cref="IEnumerable{T}"/> used to construct the value of <see cref="TestMerges"/>.</param> /// <param name="chatChannels">The <see cref="Chat.ChannelRepresentation"/>s for the <see cref="ChatUpdate"/>.</param> /// <param name="instance">The <see cref="Instance"/> used to set <see cref="InstanceName"/>.</param> /// <param name="revision">The value of <see cref="RevisionInformation"/>.</param> /// <param name="securityLevel">The value of <see cref="SecurityLevel"/>.</param> /// <param name="apiValidateOnly">The value of <see cref="ApiValidateOnly"/>.</param> public RuntimeInformation( IAssemblyInformationProvider assemblyInformationProvider, IServerPortProvider serverPortProvider, IEnumerable <TestMergeInformation> testMerges, IEnumerable <Chat.ChannelRepresentation> chatChannels, Api.Models.Instance instance, Api.Models.Internal.RevisionInformation revision, DreamDaemonSecurity?securityLevel, bool apiValidateOnly) : base(chatChannels) { ServerVersion = assemblyInformationProvider?.Version ?? throw new ArgumentNullException(nameof(assemblyInformationProvider)); ServerPort = serverPortProvider?.HttpApiPort ?? throw new ArgumentNullException(nameof(serverPortProvider)); TestMerges = testMerges?.ToList() ?? throw new ArgumentNullException(nameof(testMerges)); InstanceName = instance?.Name ?? throw new ArgumentNullException(nameof(instance)); Revision = revision ?? throw new ArgumentNullException(nameof(revision)); SecurityLevel = securityLevel; ApiValidateOnly = apiValidateOnly; }
/// <summary> /// Initializes a new instance of the <see cref="RuntimeInformation"/> <see langword="class"/>. /// </summary> /// <param name="chatTrackingContext">The <see cref="IChatTrackingContext"/> to use.</param> /// <param name="dmbProvider">The <see cref="IDmbProvider"/> to get revision information from.</param> /// <param name="serverVersion">The value of <see cref="ServerVersion"/>.</param> /// <param name="instanceName">The value of <see cref="InstanceName"/>.</param> /// <param name="securityLevel">The value of <see cref="SecurityLevel"/>.</param> /// <param name="serverPort">The value of <see cref="ServerPort"/>.</param> /// <param name="apiValidateOnly">The value of <see cref="ApiValidateOnly"/>.</param> public RuntimeInformation( IChatTrackingContext chatTrackingContext, IDmbProvider dmbProvider, Version serverVersion, string instanceName, DreamDaemonSecurity?securityLevel, ushort serverPort, bool apiValidateOnly) : base(chatTrackingContext?.Channels ?? throw new ArgumentNullException(nameof(chatTrackingContext))) { if (dmbProvider == null) { throw new ArgumentNullException(nameof(dmbProvider)); } ServerVersion = serverVersion ?? throw new ArgumentNullException(nameof(serverVersion)); Revision = new Api.Models.Internal.RevisionInformation { CommitSha = dmbProvider.CompileJob.RevisionInformation.CommitSha, Timestamp = dmbProvider.CompileJob.RevisionInformation.Timestamp, OriginCommitSha = dmbProvider.CompileJob.RevisionInformation.OriginCommitSha }; TestMerges = (IReadOnlyCollection <TestMergeInformation>)dmbProvider .CompileJob .RevisionInformation .ActiveTestMerges? .Select(x => x.TestMerge) .Select(x => new TestMergeInformation(x, Revision)) .ToList() ?? Array.Empty <TestMergeInformation>(); InstanceName = instanceName ?? throw new ArgumentNullException(nameof(instanceName)); SecurityLevel = securityLevel; ServerPort = serverPort; ApiValidateOnly = apiValidateOnly; }