public void SymbolsPreprocessTest() { /* * The parameters json format: * { * "Product": { * "Name": "product name", * "Id": 1 * }, * "Index": 109, * "Page": { * "PageIndex": 0, * "PageSize": 20 * }, * "ProductItems": ["ProductItem0", "ProductItem1", "ProductItem2"] * } */ var parameters = "{\"Product\":{\"Name\":\"product name\",\"Id\":1},\"Index\":109,\"Page\":{ \"PageIndex\":0,\"PageSize\":20},\"ProductItems\":[\"ProductItem0\",\"ProductItem1\",\"ProductItem2\"]}"; var configuration = new ConfigurationBuilder().AddJsonStream(new MemoryStream(Encoding.UTF8.GetBytes(parameters))).Build(); Assert.Equal("ProductName=product name", SymbolsEngine.SymbolsPreprocess("ProductName={{Product:Name}}", configuration)); Assert.Equal("ProductItems[1]=ProductItem1", SymbolsEngine.SymbolsPreprocess("ProductItems[1]={{ProductItems:1}}", configuration)); Assert.Equal("PageIndex={0}", SymbolsEngine.SymbolsPreprocess("PageIndex={{{Page:PageIndex}}}", configuration)); Assert.Equal("Foo=", SymbolsEngine.SymbolsPreprocess("Foo={{Foo:Foo}}", configuration)); Assert.Equal("PageNumber=", SymbolsEngine.SymbolsPreprocess("PageNumber={{Page:PageNumber}}", configuration)); }
/// <summary> /// Generate task /// </summary> /// <param name="task"></param> /// <param name="template"></param> /// <returns></returns> public TaskModel GenerateTask(Task task, Template template) { if (template == null || task == null) { throw new ArgumentNullException(template == null ? nameof(template) : nameof(task)); } var configuration = new ConfigurationBuilder().AddJsonStream(new MemoryStream(Encoding.UTF8.GetBytes(task.parameters))).Build(); Enum.TryParse(task.http_method.ToPascalCase(), out RequestMethodEnum requestMethod); var taskExecuteModel = new TaskModel { RequestMethod = requestMethod, PropertyParsingRules = JsonConvert.DeserializeObject <IDictionary <string, PropertyParsingRuleModel> >(SymbolsEngine.SymbolsPreprocess(template.property_parsing_rule, configuration)), TaskId = task.id, Uri = SymbolsEngine.SymbolsPreprocess(template.uri, configuration) }; return(taskExecuteModel); }