예제 #1
0
        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));
            }
        }
예제 #2
0
        public string GetScript(ProxyScriptingModel scriptingModel)
        {
            if (scriptingModel.UseCache)
            {
                return(_cache.GetOrAdd(CreateCacheKey(scriptingModel), (key) => CreateScript(scriptingModel)));
            }

            return(_cache[CreateCacheKey(scriptingModel)] = CreateScript(scriptingModel));
        }
예제 #3
0
 private string CreateCacheKey(ProxyScriptingModel model)
 {
     return(_jsonSerializer.Serialize(new
     {
         model.GeneratorType,
         model.Modules,
         model.Controllers,
         model.Actions,
         model.Properties
     }).ToMd5());
 }
예제 #4
0
        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);
        }
예제 #5
0
        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);
            }
        }
예제 #6
0
 private string CreateCacheKey(ProxyScriptingModel model)
 {
     return(_jsonSerializer.Serialize(model).ToMd5());
 }