public static async Task <IActionResult> SendMessageToUser( [HttpTrigger(AuthorizationLevel.Anonymous, Global.HttpVerbPost, Route = nameof(SendMessageToUser) + Global.UserIdQueryParam)] HttpRequest req, [SignalR(HubName = Global.SignalRHubName)] IAsyncCollector <SignalRMessage> signalRMessages, ILogger log, String userId ) { var validateTokenResult = GateKeeper.ValidateToken(req.Headers); if (validateTokenResult.Unauthorized) { log.LogError(validateTokenResult.Exception, validateTokenResult.LogMessage()); return(new UnauthorizedResult()); } using (var sr = new StreamReader(req.Body)) { var message = sr.ReadToEnd(); log.LogInformation(String.Format(GlobalMessages.SendingMessageOnlyToUserFormat, message, userId)); await signalRMessages.AddAsync( new SignalRMessage { UserId = userId, Target = Global.MessageTarget, Arguments = new[] { message } }); return(new OkResult()); } }
public static IActionResult SignalRConnectionNotAsSecure( [HttpTrigger(AuthorizationLevel.Anonymous, Global.HttpVerbGet, Route = null)] HttpRequest req, [SignalRConnectionInfo(HubName = Global.SignalRHubName, UserId = "{headers.x-ms-client-principal-id}")] SignalRConnectionInfo connectionInfo, ILogger log) { var validateTokenResult = GateKeeper.ValidateToken(req.Headers); if (validateTokenResult.Unauthorized) { log.LogError(validateTokenResult.Exception, validateTokenResult.LogMessage()); return(new UnauthorizedResult()); } return(new OkObjectResult(connectionInfo)); }
public static IActionResult SignalRConnection( [HttpTrigger(AuthorizationLevel.Anonymous, Global.HttpVerbGet, Route = null)] HttpRequest req, IBinder binder, ILogger log) { var validateTokenResult = GateKeeper.ValidateToken(req.Headers); if (validateTokenResult.Unauthorized) { log.LogError(validateTokenResult.Exception, validateTokenResult.LogMessage()); return(new UnauthorizedResult()); } var connectionInfo = binder.Bind <SignalRConnectionInfo>(new SignalRConnectionInfoAttribute { HubName = Global.SignalRHubName, UserId = validateTokenResult.TokenModel.UserId }); return(new OkObjectResult(connectionInfo)); }