private string CreateScript(ProxyScriptingModel scriptingModel) { var apiModel = _modelProvider.CreateApiModel(new ApplicationApiDescriptionModelRequestDto { IncludeTypes = false }); if (scriptingModel.IsPartialRequest()) { apiModel = apiModel.CreateSubModel(scriptingModel.Modules, scriptingModel.Controllers, scriptingModel.Actions); } var generatorType = _options.Generators.GetOrDefault(scriptingModel.GeneratorType); if (generatorType == null) { throw new AbpException($"Could not find a proxy script generator with given name: {scriptingModel.GeneratorType}"); } using (var scope = _serviceProvider.CreateScope()) { return(scope.ServiceProvider .GetRequiredService(generatorType) .As <IProxyScriptGenerator>() .CreateScript(apiModel)); } }
public string GetScript(ProxyScriptingModel scriptingModel) { if (scriptingModel.UseCache) { return(_cache.GetOrAdd(CreateCacheKey(scriptingModel), (key) => CreateScript(scriptingModel))); } return(_cache[CreateCacheKey(scriptingModel)] = CreateScript(scriptingModel)); }
private string CreateCacheKey(ProxyScriptingModel model) { return(_jsonSerializer.Serialize(new { model.GeneratorType, model.Modules, model.Controllers, model.Actions, model.Properties }).ToMd5()); }
public string GetScript(ProxyScriptingModel scriptingModel) { var cacheKey = CreateCacheKey(scriptingModel); if (scriptingModel.UseCache) { return(_cache.GetOrAdd(cacheKey, () => CreateScript(scriptingModel))); } var script = CreateScript(scriptingModel); _cache.Set(cacheKey, script); return(script); }
private string CreateScript(ProxyScriptingModel scriptingModel) { var apiModel = _modelProvider.CreateApiModel(); if (scriptingModel.IsPartialRequest()) { apiModel = apiModel.CreateSubModel(scriptingModel.Modules, scriptingModel.Controllers, scriptingModel.Actions); } var generatorType = _options.Generators.GetOrDefault(scriptingModel.GeneratorType); if (generatorType == null) { throw new AbpException($"Could not find a proxy script generator with given name: {scriptingModel.GeneratorType}"); } using (var scope = _serviceProvider.CreateScope()) { var script = scope.ServiceProvider.GetRequiredService(generatorType).As <IProxyScriptGenerator>().CreateScript(apiModel); return(scriptingModel.Minify ? _javascriptMinifier.Minify(script) : script); } }
private string CreateCacheKey(ProxyScriptingModel model) { return(_jsonSerializer.Serialize(model).ToMd5()); }