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; } }
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); } } }