Exemple #1
0
        public void ExecuteTemplate(MicroTemplateInfo model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            model.Result = "";
            try
            {
                switch (model.SourceType)
                {
                case "Csv":
                    ExecuteTemplateCsv(model);
                    break;

                case "JsonArray":
                    ExecuteTemplateJsonArray(model);
                    break;

                case "JsonObject":
                    ExecuteTemplateJsonObject(model);
                    break;
                }
            }
            catch (Exception ex)
            {
                model.Result = "Error executing template:" + ex.Message;
            }
        }
Exemple #2
0
        private void ExecuteTemplateJsonObject(MicroTemplateInfo model)
        {
            var template = DotLiquid.Template.Parse(model.Template);
            var source   = JsonConvert.DeserializeObject <ExpandoObject>(model.Source);
            var result   = template.Render(Hash.FromDictionary(source));

            model.Result += result + model.ItemSeparator;
        }
Exemple #3
0
        private void ExecuteTemplateJsonArray(MicroTemplateInfo model)
        {
            var template = DotLiquid.Template.Parse(model.Template);
            var arr      = JsonConvert.DeserializeObject <List <ExpandoObject> >(model.Source);

            foreach (var item in arr)
            {
                var result = template.Render(Hash.FromDictionary(item));
                model.Result += result + model.ItemSeparator;
            }
        }
Exemple #4
0
        public IActionResult PostTemplate([FromBody] MicroTemplateInfo model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            try
            {
                _microTemplateProcessor.ExecuteTemplate(model);
                return(Ok(model));
            }
            catch (Exception ex)
            {
                return(Problem(UtilString.GetStringException(ex)));
            }
        }
Exemple #5
0
 public IActionResult GetTemplate([FromQuery] IDictionary <string, string> templateParams)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest());
     }
     try
     {
         var model = MicroTemplateInfo.FromDictionary(templateParams);
         model.SetDefaultsForNulls();
         _microTemplateProcessor.ExecuteTemplate(model);
         return(Ok(model));
     }
     catch (Exception ex)
     {
         return(Problem(UtilString.GetStringException(ex)));
     }
 }
Exemple #6
0
        private void ExecuteTemplateCsv(MicroTemplateInfo model)
        {
            using var stream = new MemoryStream(Encoding.UTF8.GetBytes(model.Source ?? ""));
            using var reader = new StreamReader(stream);
            var config = new CsvConfiguration(CultureInfo.InvariantCulture)
            {
                HasHeaderRecord   = false,
                MissingFieldFound = null,
                Delimiter         = model.CsvDelimiter,
                IgnoreBlankLines  = true,
            };

            using var csv = new CsvReader(reader, config);
            var records = csv.GetRecords <GenericRecord>();
            int index   = 0;

            foreach (var record in records)
            {
                record.SetIndex(index);
                var result = model.Template.FormatLiquid(record);
                model.Result += result + model.ItemSeparator;
                index++;
            }
        }
Exemple #7
0
 public TemplateModel()
 {
     Source = new MicroTemplateInfo();
 }