diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2019-02-19 01:50:58 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2019-02-19 01:50:58 +0200 |
| commit | 9736b8c8ede6a0d121dea8381f0abb561fad5631 (patch) | |
| tree | 1c38f3f5be82b923ffae40fae00a25487179ab54 /Software/Visual_Studio/Tango.CodeGeneration | |
| parent | be3343cc0268179c7a6f628fa5e68f323a3335e5 (diff) | |
| download | Tango-9736b8c8ede6a0d121dea8381f0abb561fad5631.tar.gz Tango-9736b8c8ede6a0d121dea8381f0abb561fad5631.zip | |
Implemented auto generated web clients for PPC and machine studio.
Improved interactions with web clients across solutions.
Diffstat (limited to 'Software/Visual_Studio/Tango.CodeGeneration')
3 files changed, 84 insertions, 1 deletions
diff --git a/Software/Visual_Studio/Tango.CodeGeneration/Tango.CodeGeneration.csproj b/Software/Visual_Studio/Tango.CodeGeneration/Tango.CodeGeneration.csproj index 436bfae33..98c063a86 100644 --- a/Software/Visual_Studio/Tango.CodeGeneration/Tango.CodeGeneration.csproj +++ b/Software/Visual_Studio/Tango.CodeGeneration/Tango.CodeGeneration.csproj @@ -87,6 +87,7 @@ <Compile Include="ObservablesAdapterFile.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Property.cs" /> + <Compile Include="TangoWebClientCodeFile.cs" /> </ItemGroup> <ItemGroup> <EmbeddedResource Include="Templates\CodeFile.cshtml" /> @@ -118,11 +119,12 @@ <EmbeddedResource Include="Templates\EntityCodeFileJavaExtension.cshtml" /> <EmbeddedResource Include="Templates\ObservablesStaticCollectionsFile.cshtml" /> <EmbeddedResource Include="Templates\EntityInheritedCodeFile.cshtml" /> + <EmbeddedResource Include="Templates\TangoWebClientCodeFile.cshtml" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> + <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> </VisualStudio> </ProjectExtensions> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. diff --git a/Software/Visual_Studio/Tango.CodeGeneration/TangoWebClientCodeFile.cs b/Software/Visual_Studio/Tango.CodeGeneration/TangoWebClientCodeFile.cs new file mode 100644 index 000000000..81d80a393 --- /dev/null +++ b/Software/Visual_Studio/Tango.CodeGeneration/TangoWebClientCodeFile.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.CodeGeneration +{ + public class TangoWebClientCodeFile : Class + { + public class ControllerAction + { + public String Name { get; set; } + public String Request { get; set; } + public String Response { get; set; } + } + + public String Namespace { get; set; } + public String ControllerName { get; set; } + public String LoginRequest { get; set; } + public String LoginResponse { get; set; } + + public List<ControllerAction> Actions { get; set; } + + public TangoWebClientCodeFile() + { + Actions = new List<ControllerAction>(); + } + } +} diff --git a/Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientCodeFile.cshtml b/Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientCodeFile.cshtml new file mode 100644 index 000000000..100171849 --- /dev/null +++ b/Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientCodeFile.cshtml @@ -0,0 +1,51 @@ +@{ + Tango.CodeGeneration.TangoWebClientCodeFile model = Model as Tango.CodeGeneration.TangoWebClientCodeFile; +} + +using System.Threading.Tasks; +using Tango.Web; +using Tango.Web.Authentication; + +namespace @(model.Namespace) +{ + /// <summary> + /// Represents a machine service @(model.ControllerName) web client. + /// </summary> + /// <seealso cref="Tango.Web.TangoWebClient" /> + public abstract class @(model.Name) : TangoWebClient<@(model.LoginRequest), @(model.LoginResponse)> + { + /// <summary> + /// Initializes a new instance of the <see cref="@(model.Name)"/> class. + /// </summary> + /// <param name="environment">The environment.</param> + /// <param name="token">Existing token.</param> + public @(model.Name)(DeploymentSlot environment, WebToken token) : base(environment, "@(model.ControllerName)", token) + { + + } + + /// <summary> + /// Initializes a new instance of the <see cref="@(model.Name)"/> class. + /// </summary> + /// <param name="environment">The environment.</param> + public @(model.Name)(DeploymentSlot environment) : this(environment, null) + { + + } + + @foreach (var action in model.Actions) + { + <div> + /// <summary> + /// Executes the @(action.Name) action and returns @(action.Response). + /// </summary> + /// <returns></returns> + public Task<@(action.Response)> @(action.Name)(@(action.Request) request) + { + return Post<@(action.Request), @(action.Response)>("@(action.Name)", request); + } + + </div> + } + } +}
\ No newline at end of file |
