public static string GetScript(string name)
        {
            if (string.IsNullOrWhiteSpace(name) || !name.Contains("/"))
            {
                throw new ArgumentException("name must be formatted as {areaName}/{serviceName}", "name");
            }

            lock (Scripts)
            {
                //TODO: Use reader writer lock for performance reasons
                if (Scripts.ContainsKey(name))
                {
                    return Scripts[name].Script;
                }

                var controllerInfo = DynamicApiControllerManager.Find(name.ToPascalCase());
                if (controllerInfo == null)
                {
                    throw new HttpException(404, "There is no such a service: " + name);
                }

                var script = new ControllerScriptProxyGenerator().GenerateFor(controllerInfo);
                Scripts[name] = new ScriptInfo(name, script);
                return script;
            }
        }
Esempio n. 2
0
        public static void GenerateScriptsIfNeeded()
        {
            lock (Scripts)
            {
                if (Scripts.Count > 0)
                {
                    return;
                }

                var dynamicControllers = DynamicApiControllerManager.GetAll();
                foreach (var dynamicController in dynamicControllers)
                {
                    var script = new ControllerScriptProxyGenerator().GenerateFor(dynamicController);
                    Scripts[dynamicController.ServiceName] = new ScriptInfo(dynamicController.ServiceName, script);
                }
            }
        }
        public static void GenerateScriptsIfNeeded()
        {
            lock (Scripts)
            {
                if (Scripts.Count > 0)
                {
                    return;
                }

                var dynamicControllers = DynamicApiControllerManager.GetAll();
                foreach (var dynamicController in dynamicControllers)
                {
                    var script = new ControllerScriptProxyGenerator().GenerateFor(dynamicController);
                    Scripts[dynamicController.ServiceName] = new ScriptInfo(dynamicController.ServiceName, script);
                }
            }
        }