コード例 #1
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);
        }
コード例 #2
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 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));
            }
        }
コード例 #3
0
 private string CreateCacheKey(ProxyScriptingModel model)
 {
     return(_jsonSerializer.Serialize(model).ToMd5());
 }