/// <summary> /// Den Proxy für AngularJs bauen. Hier wird eine Liste aus den Dateinamen (Controllern) und den enthaltenen Proxyfunktionen erstellt. /// </summary> public List<GeneratedProxyEntry> BuildProxy(List<ProxyControllerInfo> proxyControllerInfos) { CheckRequirements(); List<GeneratedProxyEntry> generatedProxyEntries = new List<GeneratedProxyEntry>(); var suffix = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.jQueryJsModule).TemplateSuffix; #region Template Example //TEMPLATE FÜR: "TemplateTypes.jQueryJsModule": // window.#ServiceName# = function() { } // #PrototypeServiceCalls#"; //TEMPLATE FÜR: "TemplateTypes.jQueryJsPrototype" // #ServiceName#.prototype.#controllerFunctionName# = function (#serviceParamters#) {{ "; // return jQuery.#ServiceCallAndParameters#.then(function (result) {{ return result; }});}}"; //TEMPLATE FÜR: Window.location.href //#ServiceName#.prototype.#ControllerFunctionName# = function (#ServiceParamters#) { \r\n window.location.href = #ServiceCallAndParameters# } #endregion //Alle controller durchgehen die übergeben wurden und für jeden dann die entsprechenden Proxy Methoden erstellen foreach (ProxyControllerInfo controllerInfo in proxyControllerInfos) { //Immer das passende Template ermitteln, da dieses bei jedem Durchgang ersetzt wird. var angularJsModuleTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.jQueryJsModule).Template; var prototypeFunctions = String.Empty; //Alle Metohden im Controller durchgehen hier sind auch nur die Methoden enthalten die das Attribut für den aktuellen ProxyTyp gesetzt wurde. foreach (ProxyMethodInfos methodInfos in controllerInfo.ProxyMethodInfos) { var angularJsPrototypeTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.jQueryJsPrototype).Template; //Wenn es sich um eine Funktion mit HREF handelt, dann muss ein anderes Template geladen werden. if (methodInfos.CreateWindowLocationHrefLink) { prototypeFunctions += this.BuildHrefTemplate(methodInfos, controllerInfo, suffix); continue; } //Den Servicenamen vor dem Prototype ersetzen. string prototypeFunction = angularJsPrototypeTemplate.Replace(ConstValuesTemplates.ServiceName, ProxyBuilderHelper.GetServiceName(controllerInfo.ControllerNameWithoutSuffix, suffix, Factory.GetProxySettings().LowerFirstCharInFunctionName)); //Den Methodennamen ersetzen. prototypeFunction = prototypeFunction.Replace(ConstValuesTemplates.ControllerFunctionName, ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name)); //Parameter des Funktionsaufrufs ersetzen. prototypeFunction = prototypeFunction.Replace(ConstValuesTemplates.ServiceParamters, ProxyBuilderHelper.GetFunctionParameters(methodInfos.MethodInfo)); //Wenn es sich um einen FileUpload handelt wird hier das passende FormData eingebaut. prototypeFunction = prototypeFunction.Replace(ConstValuesTemplates.FunctionContent, ProxyBuilderHelper.GetFileUploadFormData(methodInfos)); //Service Call und Parameter ersetzen prototypeFunction = prototypeFunction.Replace(ConstValuesTemplates.ServiceCallAndParameters, ProxyBuilderHttpCall.BuildHttpCall(methodInfos, ProxyBuilder.jQueryJavaScript)); //Der Variablen für Alle Prototype functions die "neue" Funktion hinzufügen. prototypeFunctions += prototypeFunction; } string moduleTemplate = angularJsModuleTemplate.Replace(ConstValuesTemplates.ServiceName, ProxyBuilderHelper.GetServiceName(controllerInfo.ControllerNameWithoutSuffix, suffix, Factory.GetProxySettings().LowerFirstCharInFunctionName)); moduleTemplate = moduleTemplate.Replace(ConstValuesTemplates.PrototypeServiceCalls, prototypeFunctions); GeneratedProxyEntry proxyEntry = new GeneratedProxyEntry(); proxyEntry.FileContent = moduleTemplate; proxyEntry.FileName = ProxyBuilderHelper.GetProxyFileName(controllerInfo.ControllerNameWithoutSuffix, suffix, "js"); proxyEntry.FilePath = SettingsManager.GetAlternateOutputpath(TemplateTypes.jQueryJsModule); generatedProxyEntries.Add(proxyEntry); } return generatedProxyEntries; }
public List <GeneratedProxyEntry> BuildProxy(List <ProxyControllerInfo> proxyControllerInfos) { CheckRequirements(); List <GeneratedProxyEntry> generatedProxyEntries = new List <GeneratedProxyEntry>(); var suffix = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.AngularTsModule).TemplateSuffix; #region Template Example //TEMPLATE FÜR: "TemplateTypes.AngularTsModule": // module App.Services {; // export interface I#ServiceName# { #InterfaceDefinitions# }; // export class #ServiceName# implements I#ServiceName# {{; // static $inject = ['$http']; // constructor(private $http: ng.IHttpService) { }; // // #ServiceFunctions#; // //#region Angular Module Definition // private static _module: ng.IModule; // public static get module(): ng.IModule { // if (this._module) { return this._module; } // this._module = angular.module('#ServiceName#', []); // this._module.service('#ServiceName#', #ServiceName#); // return this._module;} //#endregion //TEMPLATE FÜR: "TemplateTypes.AngularTsAjaxCallWithReturnType" // #ControllerFunctionName#(#ServiceParamters#) : ng.IPromise<{#ControllerFunctionReturnType#}> { // "#FunctionContent#" // return this.$http.#ServiceCallAndParameters#.then( // (response: ng.IHttpPromiseCallbackArg<{#ControllerFunctionReturnType#}>) : {#ControllerFunctionReturnType#} => { return response.data; } ); } //TEMPLATE FÜR: "TemplateTypes.AngularTsAjaxCallNoReturnType" // #ControllerFunctionName#(#ServiceParamters#) : void { \r\n this.$http.#ServiceCallAndParameters#;} //TEMPLATE FÜR: Window.location.href // public #ControllerFunctionName#(#ServiceParamters#) : void { \r\n window.location.href = #ServiceCallAndParameters#; }; #endregion //Alle controller durchgehen die übergeben wurden und für jeden dann die entsprechenden Proxy Methoden erstellen foreach (ProxyControllerInfo controllerInfo in proxyControllerInfos) { //Immer das passende Template ermitteln, da dieses bei jedem Durchgang ersetzt wird. var angularTsModuleTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.AngularTsModule).Template; var ajaxCalls = String.Empty; var serviceInterfaceDefinitions = string.Empty; //Alle Metohden im Controller durchgehen hier sind auch nur die Methoden enthalten die das Attribut für den aktuellen ProxyTyp gesetzt wurde. foreach (ProxyMethodInfos methodInfos in controllerInfo.ProxyMethodInfos) { var functionTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.AngularTsAjaxCallNoReturnType).Template; //Wenn es sich um eine Funktion mit HREF handelt, dann muss ein anderes Template geladen werden. if (methodInfos.CreateWindowLocationHrefLink) { ajaxCalls += this.BuildHrefTemplate(methodInfos); //Da ein HREF Link auch keinen Rückgabewert hat, diesen mit Void ersetzen und die passende Interface Definition erstellen. serviceInterfaceDefinitions += String.Format(" {0}({1}): void;\r\n", ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name), ProxyBuilderTypeHelper.GetFunctionParametersWithType(methodInfos.MethodInfo)); continue; } if (ProxyBuilderTypeHelper.HasReturnType(methodInfos.ReturnType)) { //sollte ein ReturnType verwendet werden, dann das andere Template laden mit ReturnType functionTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.AngularTsAjaxCallWithReturnType).Template; //Für Methoden mit ReturnType muss auch der passende ReturnType ersetzt werden functionTemplate = functionTemplate.Replace(ConstValuesTemplates.ControllerFunctionReturnType, ProxyBuilderTypeHelper.GetTsType(methodInfos.ReturnType)); //Die Servicedefinition für jede Methode hinzufügen serviceInterfaceDefinitions += String.Format(" {0}({1}) : ng.IPromise<{2}>;\r\n", ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name), ProxyBuilderTypeHelper.GetFunctionParametersWithType(methodInfos.MethodInfo), ProxyBuilderTypeHelper.GetTsType(methodInfos.ReturnType)); //Wenn es sich um einen FileUpload handelt wird hier das passende FormData eingebaut. functionTemplate = functionTemplate.Replace(ConstValuesTemplates.FunctionContent, ProxyBuilderHelper.GetFileUploadFormData(methodInfos)); } else { //Für Funktionen Ohne Rückgabewert "void" setzten serviceInterfaceDefinitions += String.Format(" {0}({1}): void;\r\n", ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name), ProxyBuilderTypeHelper.GetFunctionParametersWithType(methodInfos.MethodInfo)); functionTemplate = functionTemplate.Replace(ConstValuesTemplates.FunctionContent, ProxyBuilderHelper.GetFileUploadFormData(methodInfos)); } //Den Methodennamen ersetzen - Der Servicename der aufgerufen werden soll. string functionCall = functionTemplate.Replace(ConstValuesTemplates.ControllerFunctionName, ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name)); //Parameter des Funktionsaufrufs ersetzen. functionCall = functionCall.Replace(ConstValuesTemplates.ServiceParamters, ProxyBuilderTypeHelper.GetFunctionParametersWithType(methodInfos.MethodInfo)); //Service Call und Parameter ersetzen functionCall = functionCall.Replace(ConstValuesTemplates.ServiceCallAndParameters, ProxyBuilderHttpCall.BuildHttpCall(methodInfos, ProxyBuilder.AngularTypeScript)); ajaxCalls += functionCall; } string moduleTemplate = angularTsModuleTemplate.Replace(ConstValuesTemplates.ServiceName, ProxyBuilderHelper.GetServiceName(controllerInfo.ControllerNameWithoutSuffix, suffix.TrimStart('.'), false)); moduleTemplate = moduleTemplate.Replace(ConstValuesTemplates.ServiceFunctions, ajaxCalls); moduleTemplate = moduleTemplate.Replace(ConstValuesTemplates.InterfaceDefinitions, serviceInterfaceDefinitions); GeneratedProxyEntry proxyEntry = new GeneratedProxyEntry(); proxyEntry.FileContent = moduleTemplate; proxyEntry.FileName = ProxyBuilderHelper.GetProxyFileName(controllerInfo.ControllerNameWithoutSuffix, suffix, "ts"); proxyEntry.FilePath = SettingsManager.GetAlternateOutputpath(TemplateTypes.AngularTsModule); generatedProxyEntries.Add(proxyEntry); } return(generatedProxyEntries); }
/// <summary> /// Den Proxy für AngularJs bauen. Hier wird eine Liste aus den Dateinamen (Controllern) und den enthaltenen Proxyfunktionen erstellt. /// </summary> public List <GeneratedProxyEntry> BuildProxy(List <ProxyControllerInfo> proxyControllerInfos) { CheckRequirements(); List <GeneratedProxyEntry> generatedProxyEntries = new List <GeneratedProxyEntry>(); var suffix = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.AngularJsModule).TemplateSuffix; #region Template Example //TEMPLATE FÜR: "TemplateTypes.AngularJsModule": // function #ServiceName#($http) {{ this.http = $http; }}" // #PrototypeServiceCalls#" // angular.module('#ServiceName#', []) .service('#ServiceName#', ['$http', #ServiceName#]) //TEMPLATE FÜR: "TemplateTypes.AngularJsPrototype" // #ServiceName#.prototype.#controllerFunctionName# = function (#serviceParamters#) {{ // return this.http.#ServiceCallAndParameters#.then(function (result) {{ return result.data; }});}} //TEMPLATE FÜR: Window.location.href // #ServiceName#.prototype.#ControllerFunctionName# = function (#ServiceParamters#) { \r\n window.location.href = #ServiceCallAndParameters# }; #endregion //Alle controller durchgehen die übergeben wurden und für jeden dann die entsprechenden Proxy Methoden erstellen foreach (ProxyControllerInfo controllerInfo in proxyControllerInfos) { //Immer das passende Template ermitteln, da dieses bei jedem Durchgang ersetzt wird. var angularJsModuleTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.AngularJsModule).Template; var prototypeFunctions = String.Empty; //Alle Metohden im Controller durchgehen hier sind auch nur die Methoden enthalten die das Attribut für den aktuellen ProxyTyp gesetzt wurde. foreach (ProxyMethodInfos methodInfos in controllerInfo.ProxyMethodInfos) { var angularJsPrototypeTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.AngularJsPrototype).Template; //Wenn es sich um eine Funktion mit HREF handelt, dann muss ein anderes Template geladen werden. if (methodInfos.CreateWindowLocationHrefLink) { prototypeFunctions += this.BuildHrefTemplate(methodInfos, controllerInfo, suffix); continue; } //Den Servicenamen vor dem Prototype ersetzen. string prototypeFunction = angularJsPrototypeTemplate.Replace(ConstValuesTemplates.ServiceName, ProxyBuilderHelper.GetServiceName(controllerInfo.ControllerNameWithoutSuffix, suffix, Factory.GetProxySettings().LowerFirstCharInFunctionName)); //Den Methodennamen ersetzen. prototypeFunction = prototypeFunction.Replace(ConstValuesTemplates.ControllerFunctionName, ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name)); //Parameter des Funktionsaufrufs ersetzen. prototypeFunction = prototypeFunction.Replace(ConstValuesTemplates.ServiceParamters, ProxyBuilderHelper.GetFunctionParameters(methodInfos.MethodInfo)); //Wenn es sich um einen FileUpload handelt wird hier das passende FormData eingebaut. prototypeFunction = prototypeFunction.Replace(ConstValuesTemplates.FunctionContent, ProxyBuilderHelper.GetFileUploadFormData(methodInfos)); //Service Call und Parameter ersetzen prototypeFunction = prototypeFunction.Replace(ConstValuesTemplates.ServiceCallAndParameters, ProxyBuilderHttpCall.BuildHttpCall(methodInfos, ProxyBuilder.AngularJavaScript)); //Der Variablen für Alle Prototype functions die "neue" Funktion hinzufügen. prototypeFunctions += prototypeFunction; } string moduleTemplate = angularJsModuleTemplate.Replace(ConstValuesTemplates.ServiceName, ProxyBuilderHelper.GetServiceName(controllerInfo.ControllerNameWithoutSuffix, suffix, true)); moduleTemplate = moduleTemplate.Replace(ConstValuesTemplates.PrototypeServiceCalls, prototypeFunctions); GeneratedProxyEntry proxyEntry = new GeneratedProxyEntry(); proxyEntry.FileContent = moduleTemplate; proxyEntry.FileName = ProxyBuilderHelper.GetProxyFileName(controllerInfo.ControllerNameWithoutSuffix, suffix, "js"); proxyEntry.FilePath = SettingsManager.GetAlternateOutputpath(TemplateTypes.AngularJsModule); generatedProxyEntries.Add(proxyEntry); } return(generatedProxyEntries); }
public List<GeneratedProxyEntry> BuildProxy(List<ProxyControllerInfo> proxyControllerInfos) { CheckRequirements(); List<GeneratedProxyEntry> generatedProxyEntries = new List<GeneratedProxyEntry>(); var suffix = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.jQueryTsModule).TemplateSuffix; #region Template Example //TEMPLATE FÜR: "TemplateTypes.jQueryTsModule": // module App.JqueryServices { // export interface I#ServiceName# { #InterfaceDefinitions# } // export class #ServiceName# implements I#ServiceName# { // "#ServiceFunctions# \r\n } } //TEMPLATE FÜR: "TemplateTypes.jQueryTsAjaxCallWithReturnType" // public #ControllerFunctionName#(#ServiceParamters#) : JQueryPromise<{#ControllerFunctionReturnType#}> { // return this.$http.#ServiceCallAndParameters#.then( // return jQuery.#ServiceCallAndParameters#.then((result: JQueryPromiseCallback<{#ControllerFunctionReturnType#}>) : {#ControllerFunctionReturnType#} => { return result; });\r\n} //TEMPLATE FÜR: "TemplateTypes.jQueryTsAjaxCallNoReturnType" // public #ControllerFunctionName#(#ServiceParamters#) : void { jQuery.#ServiceCallAndParameters# \r\n} //TEMPLATE FÜR: Window.location.href //public #ControllerFunctionName#(#ServiceParamters#) : void { \r\n window.location.href = #ServiceCallAndParameters#; \r\n } #endregion //Alle controller durchgehen die übergeben wurden und für jeden dann die entsprechenden Proxy Methoden erstellen foreach (ProxyControllerInfo controllerInfo in proxyControllerInfos) { //Immer das passende Template ermitteln, da dieses bei jedem Durchgang ersetzt wird. var jQueryTsModuleTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.jQueryTsModule).Template; var ajaxCalls = String.Empty; var serviceInterfaceDefinitions = string.Empty; //Alle Metohden im Controller durchgehen hier sind auch nur die Methoden enthalten die das Attribut für den aktuellen ProxyTyp gesetzt wurde. foreach (ProxyMethodInfos methodInfos in controllerInfo.ProxyMethodInfos) { var functionTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.jQueryTsAjaxCallNoReturnType).Template; //Wenn es sich um eine Funktion mit HREF handelt, dann muss ein anderes Template geladen werden. if (methodInfos.CreateWindowLocationHrefLink) { ajaxCalls += this.BuildHrefTemplate(methodInfos); //Da ein HREF Link auch keinen Rückgabewert hat, diesen mit Void ersetzen und die passende Interface Definition erstellen. serviceInterfaceDefinitions += String.Format(" {0}({1}): void;\r\n", ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name), ProxyBuilderTypeHelper.GetFunctionParametersWithType(methodInfos.MethodInfo)); continue; } //sollte ein ReturnType verwendet werden, dann das andere Template laden mit ReturnType if (ProxyBuilderTypeHelper.HasReturnType(methodInfos.ReturnType)) { functionTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.jQueryTsAjaxCallWithReturnType).Template; //Für Methoden mit ReturnType muss auch der passende ReturnType ersetzt werden functionTemplate = functionTemplate.Replace(ConstValuesTemplates.ControllerFunctionReturnType, ProxyBuilderTypeHelper.GetTsType(methodInfos.ReturnType)); //Die Servicedefinition für jede Methode hinzufügen serviceInterfaceDefinitions += String.Format(" {0}({1}) : JQueryPromise<{2}>;\r\n", ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name), ProxyBuilderTypeHelper.GetFunctionParametersWithType(methodInfos.MethodInfo), ProxyBuilderTypeHelper.GetTsType(methodInfos.ReturnType)); //Wenn es sich um einen FileUpload handelt wird hier das passende FormData eingebaut. functionTemplate = functionTemplate.Replace(ConstValuesTemplates.FunctionContent, ProxyBuilderHelper.GetFileUploadFormData(methodInfos)); } else { //Für Funktionen Ohne Rückgabewert "void" setzten serviceInterfaceDefinitions += String.Format(" {0}({1}): void;\r\n", ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name), ProxyBuilderTypeHelper.GetFunctionParametersWithType(methodInfos.MethodInfo)); functionTemplate = functionTemplate.Replace(ConstValuesTemplates.FunctionContent, ProxyBuilderHelper.GetFileUploadFormData(methodInfos)); } //Den Methodennamen ersetzen - Der Servicename der aufgerufen werden soll. string functionCall = functionTemplate.Replace(ConstValuesTemplates.ControllerFunctionName, ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name)); //Parameter des Funktionsaufrufs ersetzen. functionCall = functionCall.Replace(ConstValuesTemplates.ServiceParamters, ProxyBuilderTypeHelper.GetFunctionParametersWithType(methodInfos.MethodInfo)); //Service Call und Parameter ersetzen functionCall = functionCall.Replace(ConstValuesTemplates.ServiceCallAndParameters, ProxyBuilderHttpCall.BuildHttpCall(methodInfos, ProxyBuilder.jQueryTypeScript)); ajaxCalls += functionCall; } string moduleTemplate = jQueryTsModuleTemplate.Replace(ConstValuesTemplates.ServiceName, ProxyBuilderHelper.GetServiceName(controllerInfo.ControllerNameWithoutSuffix, suffix.TrimStart('.'), true)); moduleTemplate = moduleTemplate.Replace(ConstValuesTemplates.ServiceFunctions, ajaxCalls); moduleTemplate = moduleTemplate.Replace(ConstValuesTemplates.InterfaceDefinitions, serviceInterfaceDefinitions); GeneratedProxyEntry proxyEntry = new GeneratedProxyEntry(); proxyEntry.FileContent = moduleTemplate; proxyEntry.FileName = ProxyBuilderHelper.GetProxyFileName(controllerInfo.ControllerNameWithoutSuffix, suffix, "ts"); proxyEntry.FilePath = SettingsManager.GetAlternateOutputpath(TemplateTypes.jQueryTsModule); generatedProxyEntries.Add(proxyEntry); } return generatedProxyEntries; }
public List <GeneratedProxyEntry> BuildProxy(List <ProxyControllerInfo> proxyControllerInfos) { CheckRequirements(); List <GeneratedProxyEntry> generatedProxyEntries = new List <GeneratedProxyEntry>(); var suffix = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.Angular2TsModule).TemplateSuffix; #region Template Example //TEMPLATE FÜR: "TemplateTypes.Angular2TsModule": //import {Injectable} from '@angular/core';\r\n //import {Http, Response} from '@angular/http';\r\n //import {Observable} from 'rxjs/observable';\r\n" //import 'rxjs/add/operator/map';\r\n\r\n" // //@Injectable()\r\n //export class #ServiceName# { // constructor(private _http: Http) {\r\n\r\n // #ServiceFunctions# //\r\n } //TEMPLATE FÜR: "TemplateTypes.Angular2TsModuleObservableWithReturnType" //public #ControllerFunctionName#(#ServiceParamters#) : Observable<{#ControllerFunctionReturnType#}> { \r\n #FunctionContent#" + // return this._http.#ServiceCallAndParameters#.map((response: Response) => <{#ControllerFunctionReturnType#}>response.json() as {#ControllerFunctionReturnType#});\r\n} \r\n\r\n"; //TEMPLATE FÜR: "TemplateTypes.Angular2TsModuleObservableNoReturnType" // public #ControllerFunctionName#(#ServiceParamters#) : void { \r\n #FunctionContent# this._http.#ServiceCallAndParameters#; \r\n } \r\n\r\n"; //TEMPLATE FÜR: Window.location.href // public #ControllerFunctionName#(#ServiceParamters#) : void { \r\n window.location.href = #ServiceCallAndParameters#; }; #endregion //Alle controller durchgehen die übergeben wurden und für jeden dann die entsprechenden Proxy Methoden erstellen foreach (ProxyControllerInfo controllerInfo in proxyControllerInfos) { //Immer das passende Template ermitteln, da dieses bei jedem Durchgang ersetzt wird. var angularTsModuleTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.Angular2TsModule).Template; var ajaxCalls = String.Empty; //Alle Metohden im Controller durchgehen hier sind auch nur die Methoden enthalten die das Attribut für den aktuellen ProxyTyp gesetzt wurde. foreach (ProxyMethodInfos methodInfos in controllerInfo.ProxyMethodInfos) { var functionTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.Angular2TsModuleObservableNoReturnType).Template; //Wenn es sich um eine Funktion mit HREF handelt, dann muss ein anderes Template geladen werden. if (methodInfos.CreateWindowLocationHrefLink) { ajaxCalls += this.BuildHrefTemplate(methodInfos); //Da ein HREF Link auch keinen Rückgabewert hat, diesen mit Void ersetzen und die passende Interface Definition erstellen. continue; } if (ProxyBuilderTypeHelper.HasReturnType(methodInfos.ReturnType)) { //sollte ein ReturnType verwendet werden, dann das andere Template laden mit ReturnType functionTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.Angular2TsModuleObservableWithReturnType).Template; //Für Methoden mit ReturnType muss auch der passende ReturnType ersetzt werden functionTemplate = functionTemplate.Replace(ConstValuesTemplates.ControllerFunctionReturnType, ProxyBuilderTypeHelper.GetTsType(methodInfos.ReturnType)); //Wenn es sich um einen FileUpload handelt wird hier das passende FormData eingebaut. functionTemplate = functionTemplate.Replace(ConstValuesTemplates.FunctionContent, ProxyBuilderHelper.GetFileUploadFormData(methodInfos)); } else { functionTemplate = functionTemplate.Replace(ConstValuesTemplates.FunctionContent, ProxyBuilderHelper.GetFileUploadFormData(methodInfos)); } //Den Methodennamen ersetzen - Der Servicename der aufgerufen werden soll. string functionCall = functionTemplate.Replace(ConstValuesTemplates.ControllerFunctionName, ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name)); //Parameter des Funktionsaufrufs ersetzen. functionCall = functionCall.Replace(ConstValuesTemplates.ServiceParamters, ProxyBuilderTypeHelper.GetFunctionParametersWithType(methodInfos.MethodInfo)); //Service Call und Parameter ersetzen functionCall = functionCall.Replace(ConstValuesTemplates.ServiceCallAndParameters, ProxyBuilderHttpCall.BuildHttpCall(methodInfos, ProxyBuilder.Angular2TypeScript)); ajaxCalls += functionCall; } string moduleTemplate = angularTsModuleTemplate.Replace(ConstValuesTemplates.ServiceName, ProxyBuilderHelper.GetServiceName(controllerInfo.ControllerNameWithoutSuffix, suffix.TrimStart('.'), false)); moduleTemplate = moduleTemplate.Replace(ConstValuesTemplates.ServiceFunctions, ajaxCalls); GeneratedProxyEntry proxyEntry = new GeneratedProxyEntry(); proxyEntry.FileContent = moduleTemplate; proxyEntry.FileName = ProxyBuilderHelper.GetProxyFileName(controllerInfo.ControllerNameWithoutSuffix, suffix, "ts"); proxyEntry.FilePath = SettingsManager.GetAlternateOutputpath(TemplateTypes.Angular2TsModule); generatedProxyEntries.Add(proxyEntry); } return(generatedProxyEntries); }
public List<GeneratedProxyEntry> BuildProxy(List<ProxyControllerInfo> proxyControllerInfos) { CheckRequirements(); List<GeneratedProxyEntry> generatedProxyEntries = new List<GeneratedProxyEntry>(); var suffix = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.Angular2TsModule).TemplateSuffix; #region Template Example //TEMPLATE FÜR: "TemplateTypes.Angular2TsModule": //import {Injectable} from '@angular/core';\r\n //import {Http, Response} from '@angular/http';\r\n //import {Observable} from 'rxjs/observable';\r\n" //import 'rxjs/add/operator/map';\r\n\r\n" // //@Injectable()\r\n //export class #ServiceName# { // constructor(private _http: Http) {\r\n\r\n // #ServiceFunctions# //\r\n } //TEMPLATE FÜR: "TemplateTypes.Angular2TsModuleObservableWithReturnType" //public #ControllerFunctionName#(#ServiceParamters#) : Observable<{#ControllerFunctionReturnType#}> { \r\n #FunctionContent#" + // return this._http.#ServiceCallAndParameters#.map((response: Response) => <{#ControllerFunctionReturnType#}>response.json() as {#ControllerFunctionReturnType#});\r\n} \r\n\r\n"; //TEMPLATE FÜR: "TemplateTypes.Angular2TsModuleObservableNoReturnType" // public #ControllerFunctionName#(#ServiceParamters#) : void { \r\n #FunctionContent# this._http.#ServiceCallAndParameters#; \r\n } \r\n\r\n"; //TEMPLATE FÜR: Window.location.href // public #ControllerFunctionName#(#ServiceParamters#) : void { \r\n window.location.href = #ServiceCallAndParameters#; }; #endregion //Alle controller durchgehen die übergeben wurden und für jeden dann die entsprechenden Proxy Methoden erstellen foreach (ProxyControllerInfo controllerInfo in proxyControllerInfos) { //Immer das passende Template ermitteln, da dieses bei jedem Durchgang ersetzt wird. var angularTsModuleTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.Angular2TsModule).Template; var ajaxCalls = String.Empty; //Alle Metohden im Controller durchgehen hier sind auch nur die Methoden enthalten die das Attribut für den aktuellen ProxyTyp gesetzt wurde. foreach (ProxyMethodInfos methodInfos in controllerInfo.ProxyMethodInfos) { var functionTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.Angular2TsModuleObservableNoReturnType).Template; //Wenn es sich um eine Funktion mit HREF handelt, dann muss ein anderes Template geladen werden. if (methodInfos.CreateWindowLocationHrefLink) { ajaxCalls += this.BuildHrefTemplate(methodInfos); //Da ein HREF Link auch keinen Rückgabewert hat, diesen mit Void ersetzen und die passende Interface Definition erstellen. continue; } if (ProxyBuilderTypeHelper.HasReturnType(methodInfos.ReturnType)) { //sollte ein ReturnType verwendet werden, dann das andere Template laden mit ReturnType functionTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.Angular2TsModuleObservableWithReturnType).Template; //Für Methoden mit ReturnType muss auch der passende ReturnType ersetzt werden functionTemplate = functionTemplate.Replace(ConstValuesTemplates.ControllerFunctionReturnType, ProxyBuilderTypeHelper.GetTsType(methodInfos.ReturnType)); //Wenn es sich um einen FileUpload handelt wird hier das passende FormData eingebaut. functionTemplate = functionTemplate.Replace(ConstValuesTemplates.FunctionContent, ProxyBuilderHelper.GetFileUploadFormData(methodInfos)); } else { functionTemplate = functionTemplate.Replace(ConstValuesTemplates.FunctionContent, ProxyBuilderHelper.GetFileUploadFormData(methodInfos)); } //Den Methodennamen ersetzen - Der Servicename der aufgerufen werden soll. string functionCall = functionTemplate.Replace(ConstValuesTemplates.ControllerFunctionName, ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name)); //Parameter des Funktionsaufrufs ersetzen. functionCall = functionCall.Replace(ConstValuesTemplates.ServiceParamters, ProxyBuilderTypeHelper.GetFunctionParametersWithType(methodInfos.MethodInfo)); //Service Call und Parameter ersetzen functionCall = functionCall.Replace(ConstValuesTemplates.ServiceCallAndParameters, ProxyBuilderHttpCall.BuildHttpCall(methodInfos, ProxyBuilder.Angular2TypeScript)); ajaxCalls += functionCall; } string moduleTemplate = angularTsModuleTemplate.Replace(ConstValuesTemplates.ServiceName, ProxyBuilderHelper.GetServiceName(controllerInfo.ControllerNameWithoutSuffix, suffix.TrimStart('.'), false)); moduleTemplate = moduleTemplate.Replace(ConstValuesTemplates.ServiceFunctions, ajaxCalls); GeneratedProxyEntry proxyEntry = new GeneratedProxyEntry(); proxyEntry.FileContent = moduleTemplate; proxyEntry.FileName = ProxyBuilderHelper.GetProxyFileName(controllerInfo.ControllerNameWithoutSuffix, suffix, "ts"); proxyEntry.FilePath = SettingsManager.GetAlternateOutputpath(TemplateTypes.Angular2TsModule); generatedProxyEntries.Add(proxyEntry); } return generatedProxyEntries; }