public static IRouteBuilder UseMockServer(this IApplicationBuilder app, MockServerConfig config) { App = app; RouteBuilder routeBuilder = new RouteBuilder(App); config.Templates = config.Templates ?? new Dictionary <string, object>(); foreach (KeyValuePair <string, object> item in config.Templates) { var name = item.Key; var template = item.Value.ToString(); Generators[name] = () => { IDictionary <string, object> compiled = CompileTemplate(template); return(compiled); }; //IDictionary<string, object> sample = Generators[name](); //var json = JsonConvert.SerializeObject(sample); } foreach (KeyValuePair <string, MockServerUrlConfig> kv in config.Resources) { var url = kv.Key; var urlConfig = kv.Value; foreach (var ukv in urlConfig) { var method = ukv.Key; MockServerHttpVerb verb = ukv.Value; if (verb.Dynamic) { Func <HttpRequest, HttpResponse, RouteData, Task> handler = async(req, resp, route) => { string content = JsonConvert.SerializeObject(CompileTemplate(verb.Content.ToString(), req, resp, route)); await resp.WriteAsync(content);; }; routeBuilder.On(method, url, verb.ContentType, handler); } else { routeBuilder.On(method, url, verb); } } } routeBuilder.OnGet("/__config", "application/json", (route) => { return(config); }); routeBuilder.BuildAndUseRouter(); return(routeBuilder); }