From db8d36d256901b337b1de7e02449092c929d04cb Mon Sep 17 00:00:00 2001 From: Alexey Markov Date: Thu, 12 Mar 2020 12:58:00 +0100 Subject: [PATCH] changed response for SignalR negotiate to use Microsoft.Azure.SignalR.Management --- .../signalrclaimnegotiate.csharp.handlebars | 17 +++++++++-------- .../signalrcommandnegotiate.csharp.handlebars | 18 ++++++++---------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/Source/FunctionMonkey.Compiler.Core/Templates/AzureFunctions/signalrclaimnegotiate.csharp.handlebars b/Source/FunctionMonkey.Compiler.Core/Templates/AzureFunctions/signalrclaimnegotiate.csharp.handlebars index 52f3d968..91941e0d 100644 --- a/Source/FunctionMonkey.Compiler.Core/Templates/AzureFunctions/signalrclaimnegotiate.csharp.handlebars +++ b/Source/FunctionMonkey.Compiler.Core/Templates/AzureFunctions/signalrclaimnegotiate.csharp.handlebars @@ -13,7 +13,6 @@ using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using FunctionMonkey.Abstractions.Builders.Model; using System.Security.Claims; -using FunctionMonkey.SignalR; namespace {{Namespace}} { @@ -89,15 +88,17 @@ namespace {{Namespace}} string userId = principal.FindFirst(claim => claim.Type == "{{{ClaimType}}}").Value; return CreateSignalRResponse(userId); } - + public static IActionResult CreateSignalRResponse(string userId) { - List claims = new List(); - claims.Add(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", userId)); - - AzureSignalRAuthClient client = new AzureSignalRAuthClient(System.Environment.GetEnvironmentVariable("{{ConnectionStringSettingName}}")); - SignalRConnectionInfo info = client.GetClientConnectionInfo("{{{HubName}}}", claims); - return new OkObjectResult(info); + var connectionInfo = new SignalRConnectionInfo(); + var serviceManager = StaticServiceHubContextStore.Get("{{ConnectionStringSettingName}}").ServiceManager; + connectionInfo.AccessToken = serviceManager + .GenerateClientAccessToken( + "{{HubName}}", + userId); + connectionInfo.Url = serviceManager.GetClientEndpoint("{{HubName}}"); + return new OkObjectResult(connectionInfo); } private static string GetRequestUrl(HttpRequest request) diff --git a/Source/FunctionMonkey.Compiler.Core/Templates/AzureFunctions/signalrcommandnegotiate.csharp.handlebars b/Source/FunctionMonkey.Compiler.Core/Templates/AzureFunctions/signalrcommandnegotiate.csharp.handlebars index 2fd6d47c..c636fa17 100644 --- a/Source/FunctionMonkey.Compiler.Core/Templates/AzureFunctions/signalrcommandnegotiate.csharp.handlebars +++ b/Source/FunctionMonkey.Compiler.Core/Templates/AzureFunctions/signalrcommandnegotiate.csharp.handlebars @@ -12,7 +12,6 @@ using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using FunctionMonkey.Abstractions.Builders.Model; -using FunctionMonkey.SignalR; using System.Security.Claims; namespace {{Namespace}} @@ -494,15 +493,14 @@ namespace {{Namespace}} public static IActionResult CreateSignalRResponse(FunctionMonkey.Commanding.Abstractions.SignalRNegotiateResponse commandResponse) { - List claims = new List(); - if (!string.IsNullOrWhiteSpace(commandResponse.UserId)) - { - claims.Add(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", commandResponse.UserId)); - } - - AzureSignalRAuthClient client = new AzureSignalRAuthClient(System.Environment.GetEnvironmentVariable("{{ConnectionStringSettingName}}")); - SignalRConnectionInfo info = client.GetClientConnectionInfo(commandResponse.HubName, claims); - return new OkObjectResult(info); + var connectionInfo = new SignalRConnectionInfo(); + var serviceManager = StaticServiceHubContextStore.Get("{{ConnectionStringSettingName}}").ServiceManager; + connectionInfo.AccessToken = serviceManager + .GenerateClientAccessToken( + commandResponse.HubName, + commandResponse.UserId); + connectionInfo.Url = serviceManager.GetClientEndpoint(commandResponse.HubName); + return new OkObjectResult(connectionInfo); } public static IActionResult CreateResponse(int code, object content, FunctionMonkey.PluginFunctions pluginFunctions)