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(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 PlusException($"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)); } }
private string CreateCacheKey(ProxyScriptingModel model) { return(_jsonSerializer.Serialize(model).ToMd5()); }