aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.CodeGeneration
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2019-02-19 01:50:58 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2019-02-19 01:50:58 +0200
commit9736b8c8ede6a0d121dea8381f0abb561fad5631 (patch)
tree1c38f3f5be82b923ffae40fae00a25487179ab54 /Software/Visual_Studio/Tango.CodeGeneration
parentbe3343cc0268179c7a6f628fa5e68f323a3335e5 (diff)
downloadTango-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')
-rw-r--r--Software/Visual_Studio/Tango.CodeGeneration/Tango.CodeGeneration.csproj4
-rw-r--r--Software/Visual_Studio/Tango.CodeGeneration/TangoWebClientCodeFile.cs30
-rw-r--r--Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientCodeFile.cshtml51
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