예제 #1
0
        /// <summary>
        /// Converts an <see cref="EnvironmentExportWindowViewModel"/> to an <see cref="EnvironmentViewModel"/>.
        /// </summary>
        /// <param name="entity">The <see cref="EnvironmentExportWindowViewModel"/> to convert from.</param>
        /// <returns>A converted instance of <see cref="EnvironmentViewModel"/>.</returns>
        public EnvironmentViewModel To(EnvironmentExportWindowViewModel entity)
        {
            if (entity.Environment == null)
            {
                return(null);
            }
            var newModel = new EnvironmentViewModel()
            {
                Name    = entity.Environment.Name,
                AddedOn = entity.Environment.AddedOn,
                Id      = entity.Environment.Id
            };

            foreach (var environmentVariable in entity.Environment.EnvironmentVariables)
            {
                var newVariable = new EnvironmentVariableViewModel()
                {
                    Id          = environmentVariable.Id,
                    Name        = environmentVariable.Name,
                    Value       = environmentVariable.Value,
                    AddedOn     = environmentVariable.AddedOn,
                    Environment = newModel
                };
                newModel.EnvironmentVariables.Add(newVariable);
            }

            return(newModel);
        }
예제 #2
0
        /// <summary>
        /// Converts an <see cref="EnvironmentViewModel"/> to an <see cref="EnvironmentExportWindowViewModel"/> for use in the Chami export window.
        /// </summary>
        /// <param name="model">The <see cref="EnvironmentViewModel"/> to convert from.</param>
        /// <returns>A converted instance of <see cref="EnvironmentExportWindowViewModel"/>.</returns>
        public EnvironmentExportWindowViewModel From(EnvironmentViewModel model)
        {
            var newModel = new EnvironmentViewModel()
            {
                Name    = model.Name,
                AddedOn = model.AddedOn,
                Id      = model.Id
            };

            foreach (var environmentVariable in model.EnvironmentVariables)
            {
                var newVariable = new EnvironmentVariableViewModel()
                {
                    Id          = environmentVariable.Id,
                    Name        = environmentVariable.Name,
                    Value       = environmentVariable.Value,
                    AddedOn     = environmentVariable.AddedOn,
                    Environment = newModel
                };
                newModel.EnvironmentVariables.Add(newVariable);
            }
            return(new EnvironmentExportWindowViewModel()
            {
                Environment = newModel
            });
        }
예제 #3
0
        /// <summary>
        /// Custom logic for reading a JSON object and converting it to an <see cref="EnvironmentViewModel"/>.
        /// </summary>
        /// <param name="reader">A <see cref="JsonReader"/>.</param>
        /// <param name="objectType">The <see cref="Type"/> to convert from.</param>
        /// <param name="existingValue">Unused.</param>
        /// <param name="serializer">The <see cref="JsonSerializer"/> to use.</param>
        /// <returns>A converter <see cref="EnvironmentViewModel"/> object.</returns>
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
                                        JsonSerializer serializer)
        {
            if (!CanConvert(objectType))
            {
                throw new NotSupportedException($"The converter cannot handle type {objectType}!");
            }

            JObject jObject   = JObject.Load(reader);
            var     viewModel = new EnvironmentViewModel
            {
                Name = jObject.GetValue("name", StringComparison.InvariantCultureIgnoreCase).ToString()
            };

            if (jObject.GetValue("environmentvariables", StringComparison.InvariantCultureIgnoreCase) is JObject
                environmentVariablesJObject)
            {
                foreach (var environmentVariable in environmentVariablesJObject)
                {
                    var environmentVariableViewModel = new EnvironmentVariableViewModel
                    {
                        Environment = viewModel,
                        Name        = environmentVariable.Key,
                        Value       = environmentVariable.Value.ToString()
                    };
                    viewModel.EnvironmentVariables.Add(environmentVariableViewModel);
                }
            }

            return(viewModel);
        }
예제 #4
0
        public void TestWriting()
        {
            var outputFile  = "D:/code/Chami/ChamiTests/OutputFiles/chami-output-test.json";
            var environment = new EnvironmentViewModel();

            environment.Name = "Test environment";
            var environmentVariable = new EnvironmentVariableViewModel();

            environmentVariable.Name  = "USER";
            environmentVariable.Value = "ChamiUser";
            var environmentVariable2 = new EnvironmentVariableViewModel();

            environmentVariable2.Name  = "PASSWORD";
            environmentVariable2.Value = "Passw0rd!";
            environment.EnvironmentVariables.Add(environmentVariable);
            environment.EnvironmentVariables.Add(environmentVariable2);
            var json = JsonConvert.SerializeObject(environment, Formatting.Indented, new EnvironmentViewModelJsonConverter());

            File.WriteAllText(outputFile, json);
            FileInfo fileInfo = new FileInfo(outputFile);

            Assert.Equal(124, fileInfo.Length);
        }
예제 #5
0
        /// <summary>
        /// Reads the file and returns a new <see cref="EnvironmentViewModel"/>.
        /// </summary>
        /// <returns>An <see cref="EnvironmentViewModel"/> with variables read from the dotEnv file.</returns>
        public EnvironmentViewModel Process()
        {
            var newVariables         = DotEnv.Fluent().WithEnvFiles(_inputFile).Read();
            var environmentViewModel = new EnvironmentViewModel();

            environmentViewModel.Name = _inputFile;
            foreach (var variable in newVariables)
            {
                var environmentVariable = new EnvironmentVariableViewModel();
                environmentVariable.Name  = variable.Key;
                environmentVariable.Value = variable.Value;

                if (environmentVariable.Name == "_CHAMI_ENV")
                {
                    environmentViewModel.Name = environmentVariable.Value;
                }
                else
                {
                    environmentViewModel.EnvironmentVariables.Add(environmentVariable);
                }
            }

            return(environmentViewModel);
        }
예제 #6
0
 /// <summary>
 /// Deletes an <see cref="EnvironmentVariableViewModel"/> object from the datastore.
 /// </summary>
 /// <param name="selectedVariable"></param>
 public void DeleteVariable(EnvironmentVariableViewModel selectedVariable)
 {
     _repository.DeleteVariableById(selectedVariable.Id);
 }