/// <summary> /// Zusammenbauen/erstellen des JavaScripProxies /// </summary> private void BuildJavaScriptProxyFiles(ControllerTypeInformations controllerInfo, IProxyWriter proxyWriter) { //Wenn keine Methoden übergeben wurden, kann auch keine Proxyklasse erstellt werden if (!controllerInfo.MethodTypeInformations.Any()) { return; } //Den Funktionsnamen/Modulnamen für unser Modul ermitteln, z.B. "HomePSrv" string javaScriptSrvName = BuildHelper.GetJavaScriptModuleName(controllerInfo.Controller); //Wenn angegeben, den ersten Buchstaben der funktion kleinschreiben if (LowerFirstCharInFunctionName) { javaScriptSrvName = BuildHelper.LowerFirstCharName(javaScriptSrvName); } StringBuilder builder = new StringBuilder(); //Beschriftung einfügen das es sich um ein automatisch generiertes Dokument handelt. builder.Append(string.Format(AngularProxyJsTemplates.AutomaticlyCreated, DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.UserName)); builder.Append(Environment.NewLine).Append(Environment.NewLine); //unsere Funktionsdefinition zusammenbauen und einfüge, z.B. "function HomePSrv($http, $log) { ..." builder.Append(string.Format(AngularProxyJsTemplates.ServerFunctionDefinition, javaScriptSrvName)); builder.Append(Environment.NewLine).Append(Environment.NewLine); //Alle Methoden durchgehen und die entsprechenden Parameter ermitteln und den passenden //POST bzw. GET Aufruf zusammenbauen als Prototypefunktion für unsere Funktion. foreach (MethodTypeInformations info in controllerInfo.MethodTypeInformations) { string methodName = info.MethodInfo.Name; //Wenn angegeben, den ersten Buchstaben der funktion kleinschreiben if (LowerFirstCharInFunctionName) { methodName = BuildHelper.LowerFirstCharName(methodName); } string functionParameters = BuildHelper.GetFunctionParameters(info.MethodInfo); string methodCall = BuildHelper.BuildHttpCall(info, HasSiteRootDefinition); //Unseren jeweiligen Methodenaufruf zusammenbauen ob POST oder GET string fctCall = string.Format(AngularProxyJsTemplates.BasicSuccessServerCall, javaScriptSrvName, methodName, functionParameters, methodCall); builder.Append(fctCall).Append(Environment.NewLine).Append(Environment.NewLine); } //Unsere ModulDefinition hinzufügen, z.B. 'angular.module("app.HomePSrv", []).service("HomePSrv", HomePSrv);' builder.Append(string.Format(AngularProxyJsTemplates.ModuleDefinition, javaScriptSrvName)); string proxy = builder.ToString(); //Die Proxy Dateien ins Dateisystem schreiben proxyWriter.SaveProxyContent(proxy, string.Format(@"{0}.js", javaScriptSrvName)); }
/// <summary> /// Zusammenbauen/erstellen des JavaScripProxies /// </summary> private void BuildJavaScriptProxyFiles(ControllerTypeInformations controllerInfo, IProxyWriter proxyWriter) { //Wenn keine Methoden übergeben wurden, kann auch keine Proxyklasse erstellt werden if (!controllerInfo.MethodTypeInformations.Any()) { return; } //Den Funktionsnamen/Modulnamen für unser Modul ermitteln, z.B. "HomePSrv" string javaScriptSrvName = BuildHelper.GetJavaScriptModuleName(controllerInfo.Controller); string controllerName = BuildHelper.GetClearControllerName(controllerInfo.Controller).Trim() + "PService"; //Wenn angegeben, den ersten Buchstaben der funktion kleinschreiben if (LowerFirstCharInFunctionName) { javaScriptSrvName = BuildHelper.LowerFirstCharName(javaScriptSrvName); } StringBuilder builder = new StringBuilder(); //Beschriftung einfügen das es sich um ein automatisch generiertes Dokument handelt. builder.Append(string.Format(AngularJsProxyTsTemplates.AutomaticlyCreated, DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.UserName)); builder.Append(Environment.NewLine).Append(Environment.NewLine); //Unser GesamtTemplate entsprechend ausfüllen. Beschreibung der Templatewerte: //{0} --> Der Name der Klasse //{1} --> Auflistung der Interface Funktionen für unsere Klasse //{2} --> Auflistung der Service Funktionen die über das Interface eingebunden wurden //{3} --> der Name des Service Moduls nach "außen" string fct = string.Format(AngularJsProxyTsTemplates.ModuleTemplate, controllerName, BuildInterfaceDifinitions(controllerInfo), BuildfunctionDefinitions(controllerInfo), javaScriptSrvName); builder.Append(fct); builder.Append(Environment.NewLine).Append(Environment.NewLine); string proxy = builder.ToString(); //Die Proxy Datei ins Dateisystem schreiben *.ts -> TypeScript proxyWriter.SaveProxyContent(proxy, string.Format(@"{0}.ts", javaScriptSrvName)); }