public async Task GetSistemaQuery_Handle() { // Arrange IUnitOfWork unitOfWork = DbContextHelper.GetContext(); IMapper mapper = AutoMapperHelper.GetMappings(); Mock <IEventHandler> mockServiceBus = ServiceBusHelper.GetInstance(); Mock <IHubContext <CpnucleoHub> > mockSignalR = SignalRHelper.GetInstance(); Guid sistemaId = Guid.NewGuid(); await unitOfWork.SistemaRepository.AddAsync(MockEntityHelper.GetNewSistema(sistemaId)); await unitOfWork.SaveChangesAsync(); GetSistemaQuery request = new() { Id = sistemaId }; // Act SistemaHandler handler = new(unitOfWork, mapper, mockServiceBus.Object, mockSignalR.Object); SistemaViewModel response = await handler.Handle(request, CancellationToken.None); // Assert Assert.True(response != null); Assert.True(response.Id != Guid.Empty); Assert.True(response.DataInclusao.Ticks != 0); }
public async Task ListSistemaQuery_Handle() { // Arrange IUnitOfWork unitOfWork = DbContextHelper.GetContext(); IMapper mapper = AutoMapperHelper.GetMappings(); Mock <IEventHandler> mockServiceBus = ServiceBusHelper.GetInstance(); Mock <IHubContext <CpnucleoHub> > mockSignalR = SignalRHelper.GetInstance(); Guid sistemaId = Guid.NewGuid(); await unitOfWork.SistemaRepository.AddAsync(MockEntityHelper.GetNewSistema(sistemaId)); await unitOfWork.SistemaRepository.AddAsync(MockEntityHelper.GetNewSistema()); await unitOfWork.SistemaRepository.AddAsync(MockEntityHelper.GetNewSistema()); await unitOfWork.SaveChangesAsync(); ListSistemaQuery request = new(); // Act SistemaHandler handler = new(unitOfWork, mapper, mockServiceBus.Object, mockSignalR.Object); IEnumerable <SistemaViewModel> response = await handler.Handle(request, CancellationToken.None); // Assert Assert.True(response != null); Assert.True(response.Any()); Assert.True(response.FirstOrDefault(x => x.Id == sistemaId) != null); }
public HttpResponseMessage Wait() { try { LogQueryString("Wait"); if (Convert.ToInt32(GetQueryParam("QueueTime")) == 0) { ApiHelper.SaveOrUpdateCallHistory(GetQueryParam("CallSid"), GetQueryParam("CallSid"), queueDate: DateTime.UtcNow); var to = GetQueryParam("RedirectTo"); if (string.IsNullOrEmpty(to)) { SignalRHelper.Enqueue(GetQueryParam("CallSid")); } else { SignalRHelper.Incoming(GetQueryParam("CallSid"), to); } } return(GetHttpResponse(TwilioResponseHelper.Wait(GetQueryParam("QueueSid"), GetQueryParam("QueueTime"), GetQueryParam("CurrentQueueSize")))); } catch (Exception e) { Log.Error(e); throw; } }
public async Task Fetch_Single_Game_Test() { // Arrange var expected = typeof(OkObjectResult); var expectedGameID = "abc"; _gamesHandlerStub.SingleGame = new MyChessGame() { ID = "abc" }; var identity = new ClaimsIdentity(); identity.AddClaim(new Claim("http://schemas.microsoft.com/identity/claims/scope", "Games.ReadWrite")); _securityValidatorStub.ClaimsPrincipal = new ClaimsPrincipal(identity); var req = HttpRequestHelper.Create("GET", query: new Dictionary <string, Microsoft.Extensions.Primitives.StringValues>() { { "state", "Archive" } }); // Act var actual = await _gamesFunction.Run(req, SignalRHelper.Create(), "abc"); // Assert Assert.IsType(expected, actual); var body = actual as OkObjectResult; var actualGame = body?.Value as MyChessGame; Assert.Equal(expectedGameID, actualGame?.ID); }
private void Compiler_SendToLog(object sender, Debugger.Core.Models.CompilerLogEventArgs e) { if (Session["ConnectionId"] != null && !String.IsNullOrEmpty(e.Message)) { SignalRHelper.LogEventMessage(Session["ConnectionId"].ToString(), e.Message); } }
public HttpResponseMessage Dial() { try { LogQueryString("Dial"); ApiHelper.UploadRecord(GetQueryParam("DialCallSid"), GetQueryParam("CallSid"), GetQueryParam("RecordingUrl")); ApiHelper.SaveOrUpdateCallHistory(GetQueryParam("DialCallSid"), GetQueryParam("CallSid"), endDialDate: DateTime.UtcNow, recordUrl: GetQueryParam("RecordingUrl"), recordDuration: GetQueryParam("RecordingDuration")); if (!Settings.Pause) { SignalRHelper.ChangeAgentStatus((int)AgentStatus.Online); } SignalRHelper.End(); Task.Run(() => new ApiHelper(GetQueryParam("Tenant"), GetQueryParam("CallerId")).SavePrice(GetQueryParam("DialCallSid"), GetQueryParam("CallSid"))); return(GetHttpResponse(TwilioResponseHelper.Dial())); } catch (Exception e) { Log.Error(e); throw; } }
public byte RemoveXmppConnection(string connectionId, string userName, int tenantId) { try { _log.DebugFormat("Remove Xmpp Connection: connectionId={0}, userName={1}, tenantId={2}", connectionId, userName, tenantId); var jid = GetJid(userName, tenantId, SignalRHelper.SIGNALR_RESOURCE); var listener = (SignalRXmppListener)((XmppGateway)_xmppServer.GetService(typeof(IXmppReceiver))).GetXmppListener("SignalR Listener"); _xmppServer.SessionManager.CloseSession(jid); _xmppServer.StreamManager.RemoveStream(connectionId); listener.CloseXmppConnection(connectionId); var sender = (IXmppSender)_xmppServer.GetService(typeof(IXmppSender)); sender.Broadcast(_xmppServer.SessionManager.GetSessions(), new Presence { Priority = SignalRHelper.PRIORITY, From = jid, Type = PresenceType.unavailable }); var userSession = _xmppServer.SessionManager.GetAvailableSession(jid.BareJid); if (userSession != null && userSession.Presence != null && userSession.Presence.Type != PresenceType.unavailable) { return(SignalRHelper.GetState(userSession.Presence.Show, userSession.Presence.Type)); } } catch (Exception e) { _log.Error(e); } return(SignalRHelper.USER_OFFLINE); }
public Dictionary <string, byte> GetAllStates(int tenantId, string from) { var states = new Dictionary <string, byte>(); try { _log.Debug("Get All States"); var userJid = GetJid(from, tenantId); ASCContext.SetCurrentTenant(userJid.Server); foreach (var user in ASCContext.UserManager.GetUsers().Where(u => !u.IsMe())) { userJid = GetJid(user.UserName, tenantId); var session = _xmppServer.SessionManager.GetAvailableSession(userJid.BareJid); if (session != null && session.Presence != null && session.Presence.Type != PresenceType.unavailable) { states.Add(userJid.User, SignalRHelper.GetState(session.Presence.Show, session.Presence.Type)); } } } catch (Exception e) { _log.Error(e); } return(states); }
public async Task Fetch_Games_Test() { // Arrange var expected = typeof(OkObjectResult); var expectedGames = 2; _gamesHandlerStub.Games.Add(new MyChessGame()); _gamesHandlerStub.Games.Add(new MyChessGame()); var identity = new ClaimsIdentity(); identity.AddClaim(new Claim("http://schemas.microsoft.com/identity/claims/scope", "Games.ReadWrite")); _securityValidatorStub.ClaimsPrincipal = new ClaimsPrincipal(identity); var req = HttpRequestHelper.Create("GET", query: new Dictionary <string, Microsoft.Extensions.Primitives.StringValues>() { { "state", "WaitingForYou" } }); // Act var actual = await _gamesFunction.Run(req, SignalRHelper.Create(), null); // Assert Assert.IsType(expected, actual); var body = actual as OkObjectResult; var list = body?.Value as List <MyChessGame>; Assert.Equal(expectedGames, list?.Count); }
public void SendPresenceToSignalR(Presence presence, XmppSessionManager sessionManager) { try { var state = SignalRHelper.GetState(presence.Show, presence.Type); if (state == SignalRHelper.USER_OFFLINE && sessionManager != null) { var jidSessions = sessionManager.GetBareJidSessions(presence.From). Where(s => !s.IsSignalRFake && s.Presence.Type != PresenceType.unavailable); if (jidSessions.Count() > 0) { int priority = jidSessions.First().Priority; var bestSession = jidSessions.First(); foreach (var session in jidSessions) { if (session.Priority > priority) { priority = session.Priority; bestSession = session; } } _reverseJabberServiceClient.SendState(bestSession.Presence.From.User.ToLowerInvariant(), SignalRHelper.GetState(bestSession.Presence.Show, bestSession.Presence.Type), -1, bestSession.Presence.From.Server); return; } } _reverseJabberServiceClient.SendState(presence.From.User.ToLowerInvariant(), state, -1, presence.From.Server); } catch (Exception e) { _log.ErrorFormat("Can not send to {0} to SignalR: {1} {2}", presence, e.Message, e.StackTrace); } }
public AnuntController() { var dbContext = new ApplicationDbContext(); _anuntService = new AnuntService(dbContext); _smsService = new SmsService(); _signalRHelper = new SignalRHelper(); }
public CommentsController() { var dbContext = new ApplicationDbContext(); _commentsService = new CommentsService(dbContext); _anuntService = new AnuntService(dbContext); _signalRHelper = new SignalRHelper(); }
public static void UseMvcGridSignalR(this IApplicationBuilder app) { app.UseSignalR(routes => { routes.MapHub <MVCGridSignalR>("/MVCGridSignalR"); }); SignalRHelper.Configure(app.ApplicationServices.GetRequiredService <IHubContext <MVCGridSignalR> >()); }
public MainViewModel() { Connect = new RelayCommand(connectAction); Disconnect = new RelayCommand(disconnectAction); Move = new RelayCommand <string>(moveAction); Points = 0; TotalDots = 0; signalRHelper = new SignalRHelper(); Connected = false; dispatcher = CoreWindow.GetForCurrentThread().Dispatcher; }
public bool RemoveXmppConnection(string connectionId, string userName, int tenantId) { bool result = false; try { _log.DebugFormat("Remove Xmpp Connection: connectionId={0}, userName={1}, tenantId={2}", connectionId, userName, tenantId); var jid = GetJid(userName, tenantId, SignalRHelper.SIGNALR_RESOURCE); var listener = (SignalRXmppListener)((XmppGateway)_xmppServer.GetService(typeof(IXmppReceiver))).GetXmppListener("SignalR Listener"); _xmppServer.SessionManager.CloseSession(jid); _xmppServer.StreamManager.RemoveStream(connectionId); listener.CloseXmppConnection(connectionId); var sender = (IXmppSender)_xmppServer.GetService(typeof(IXmppSender)); Task.Run(() => { sender.Broadcast(_xmppServer.SessionManager.GetSessions(), new Presence { Priority = SignalRHelper.PRIORITY, From = jid, Type = PresenceType.unavailable }); }); var jidSessions = _xmppServer.SessionManager.GetBareJidSessions(jid).Where(s => s.Presence.Type != PresenceType.unavailable).ToArray(); if (jidSessions.Length == 0) { result = true; } else { Task.Run(() => { var bestSessions = jidSessions.Where(s => !s.IsSignalRFake && s.Presence.Type != PresenceType.unavailable).OrderByDescending(s => s.Presence.Priority).ToArray(); if (bestSessions.Length > 0 && bestSessions[0].Presence != null) { var bestSession = bestSessions[0]; _reverseJabberServiceClient.SendState(bestSession.Jid.User.ToLowerInvariant(), SignalRHelper.GetState(bestSession.Presence.Show, bestSession.Presence.Type), tenantId, string.Empty); } else { _log.ErrorFormat("XMPP session Presence is null, userName = {0}", userName); } }); result = false; } } catch (Exception e) { _log.ErrorFormat("Unexpected error, userName = {0}, {1}, {2}, {3}", userName, e, e.StackTrace, e.InnerException != null ? e.InnerException.Message : string.Empty); } return(result); }
public Dictionary <string, Dictionary <string, byte> > GetAllStates() { var states = new Dictionary <string, Dictionary <string, byte> >(); try { _log.Debug("Get All States"); var sessions = _xmppServer.SessionManager.GetSessions().ToArray(); var jids = new List <string>(); for (int i = 0; i < sessions.Length; i++) { if (!jids.Contains(sessions[i].Jid.Bare)) { jids.Add(sessions[i].Jid.Bare); } } for (int i = 0; i < jids.Count; i++) { var jidSessions = _xmppServer.SessionManager.GetBareJidSessions(jids[i]). Where(s => !s.IsSignalRFake).OrderByDescending(s => s.Presence.Priority).ToArray(); if (jidSessions.Length > 0 && jidSessions[0].Presence != null) { // for migration from teamlab.com to onlyoffice.com var domain = jidSessions[0].Jid.Server; if (fromTeamlabToOnlyOffice == "true" && domain.EndsWith(fromServerInJid)) { int place = domain.LastIndexOf(fromServerInJid); if (place >= 0) { domain = domain.Remove(place, fromServerInJid.Length).Insert(place, toServerInJid); } } Dictionary <string, byte> tenantStates; if (!states.TryGetValue(domain, out tenantStates)) { tenantStates = new Dictionary <string, byte>(); states[domain] = tenantStates; } var state = SignalRHelper.GetState(jidSessions[0].Presence.Show, jidSessions[0].Presence.Type); if (state != SignalRHelper.USER_OFFLINE) { tenantStates[jidSessions[0].Jid.User] = state; } } } } catch (Exception e) { _log.ErrorFormat("Unexpected error {0}", e); } return(states); }
private Presence GetNewPresence(byte state, Presence presence, Jid jid) { if (presence == null) { presence = new Presence(SignalRHelper.GetShowType(state), String.Empty) { From = jid, Priority = SignalRHelper.PRIORITY }; } presence.Show = SignalRHelper.GetShowType(state); presence.Type = SignalRHelper.GetPresenceType(state); return(presence); }
public byte GetState(int tenantId, string from) { try { var session = _xmppServer.SessionManager.GetAvailableSession(GetJid(from, tenantId).BareJid); if (session != null && session.Presence != null && session.Presence.Type != PresenceType.unavailable) { return(SignalRHelper.GetState(session.Presence.Show, session.Presence.Type)); } } catch (Exception e) { _log.Error(e); } return(SignalRHelper.USER_OFFLINE); }
public void SendPresenceToSignalR(Presence presence, XmppSessionManager sessionManager) { try { var state = SignalRHelper.GetState(presence.Show, presence.Type); if (state == SignalRHelper.USER_OFFLINE && sessionManager != null) { //sessionManager.CloseSession(presence.From.BareJid); } SignalrServiceClient.SendState(presence.From.User.ToLowerInvariant(), state, -1, presence.From.Server); } catch (Exception e) { _log.ErrorFormat("Can not send to {0} to SignalR: {1} {2}", presence, e.Message, e.StackTrace); } }
public byte GetState(int tenantId, string from) { try { var session = _xmppServer.SessionManager.GetAvailableSession(GetJid(from, tenantId).BareJid); if (session != null && session.Presence != null && session.Presence.Type != PresenceType.unavailable) { return(SignalRHelper.GetState(session.Presence.Show, session.Presence.Type)); } } catch (Exception e) { _log.ErrorFormat("Unexpected error, {0}, {1}, {2}", e.Message, e.StackTrace, e.InnerException != null ? e.InnerException.ToString() : string.Empty); } return(SignalRHelper.USER_OFFLINE); }
public HttpResilientClient ( int retryCount = 10, int sleepDurationSeconds = 5, int durationOfbreak = 3, int handledEventsAllowedBeforeBreaking = 1 ) { _invoker = new HttpClient { BaseAddress = new Uri(WebAPIRoutes.ApplicationBaseUrl) }; _retryCount = retryCount; _durationOfbreak = durationOfbreak; _sleepDurationSeconds = sleepDurationSeconds; _handledEventsAllowedBeforeBreaking = handledEventsAllowedBeforeBreaking; _signalRHelper = new SignalRHelper(); }
public string HealthCheck(string userName, int tenantId) { try { Random rand = new Random(); string connectionId = Guid.NewGuid().ToString(); byte state = (byte)rand.Next(SignalRHelper.USER_ONLINE, SignalRHelper.USER_OFFLINE); var jid = GetJid(userName, tenantId); if (_xmppServer.SessionManager != null) { state = AddXmppConnection(connectionId, userName, state, tenantId); var session = _xmppServer.SessionManager.GetSession(jid); if (session != null) { var realState = SignalRHelper.GetState(session.Presence.Show, session.Presence.Type); if (realState != state) { throw new Exception("State is " + realState + " but should be " + state); } state = (byte)rand.Next(SignalRHelper.USER_ONLINE, SignalRHelper.USER_OFFLINE); SendState(tenantId, userName, state); session = _xmppServer.SessionManager.GetSession(jid); realState = SignalRHelper.GetState(session.Presence.Show, session.Presence.Type); if (realState != state) { throw new Exception("State is " + realState + " but should be " + state); } GetRecentMessages(tenantId, userName, "test.user", 0); } RemoveXmppConnection(connectionId, userName, tenantId); } else { throw new Exception("SessionManager is null"); } } catch (Exception e) { _log.ErrorFormat("Unexpected error, {0}, {1}, {2}", e.Message, e.StackTrace, e.InnerException != null ? e.InnerException.ToString() : string.Empty); return(e.ToString()); } return(string.Empty); }
public HttpResponseMessage Client() { try { LogQueryString("Client"); ApiHelper.SaveOrUpdateCallHistory(GetQueryParam("CallSid"), GetQueryParam("ParentCallSid"), answerDate: DateTime.UtcNow, answeredBy: GetQueryParam("CallerId")); SignalRHelper.Start(); return(GetHttpResponse(new TwilioResponse())); } catch (Exception e) { Log.Error(e); throw; } }
public HttpResponseMessage VoiceMail() { try { LogQueryString("VoiceMail"); ApiHelper.SaveOrUpdateCall(GetQueryParam("CallSid"), status: VoipCallStatus.Missed); SignalRHelper.VoiceMail(GetQueryParam("CallSid")); return(GetHttpResponse(TwilioResponseHelper.VoiceMail())); } catch (Exception e) { Log.Error(e); throw; } }
public async Task Create_Game_Fails_Due_Invalid_Opponent_Test() { // Arrange var expected = typeof(ObjectResult); var expectedError = "1234"; var game = new MyChessGame() { Name = "great game", State = "Normal", Updated = DateTimeOffset.UtcNow }; game.Players.White.ID = "p1"; game.Players.Black.ID = "p3"; game.Moves.Add(new MyChessGameMove() { Move = "A2A3", Comment = "Cool move", Start = DateTimeOffset.UtcNow.AddMinutes(-1), End = DateTimeOffset.UtcNow }); _gamesHandlerStub.Error = new Models.HandlerError() { Instance = "some text/1234" }; var identity = new ClaimsIdentity(); identity.AddClaim(new Claim("http://schemas.microsoft.com/identity/claims/scope", "Games.ReadWrite")); _securityValidatorStub.ClaimsPrincipal = new ClaimsPrincipal(identity); var req = HttpRequestHelper.Create("POST", body: game, query: new Dictionary <string, Microsoft.Extensions.Primitives.StringValues>()); // Act var actual = await _gamesFunction.Run(req, SignalRHelper.Create(), "abc"); // Assert Assert.IsType(expected, actual); var body = actual as ObjectResult; var actualError = body?.Value as ProblemDetails; Assert.EndsWith(expectedError, actualError?.Instance); }
public async Task Create_Game_Test() { // Arrange var expected = typeof(CreatedResult); var expectedGameID = "abc"; var game = new MyChessGame() { Name = "great game", State = "Normal", Updated = DateTimeOffset.UtcNow }; game.Players.White.ID = "p1"; game.Players.Black.ID = "p2"; game.Moves.Add(new MyChessGameMove() { Move = "A2A3", Comment = "Cool move", Start = DateTimeOffset.UtcNow.AddMinutes(-1), End = DateTimeOffset.UtcNow }); _gamesHandlerStub.SingleGame = new MyChessGame() { ID = "abc" }; var identity = new ClaimsIdentity(); identity.AddClaim(new Claim("http://schemas.microsoft.com/identity/claims/scope", "Games.ReadWrite")); _securityValidatorStub.ClaimsPrincipal = new ClaimsPrincipal(identity); var req = HttpRequestHelper.Create("POST", body: game, query: new Dictionary <string, Microsoft.Extensions.Primitives.StringValues>()); // Act var actual = await _gamesFunction.Run(req, SignalRHelper.Create(), "abc"); // Assert Assert.IsType(expected, actual); var body = actual as CreatedResult; var actualGame = body?.Value as MyChessGame; Assert.Equal(expectedGameID, actualGame?.ID); }
public async Task UpdateSistemaCommand_Handle() { // Arrange IUnitOfWork unitOfWork = DbContextHelper.GetContext(); IMapper mapper = AutoMapperHelper.GetMappings(); Mock <IEventHandler> mockServiceBus = ServiceBusHelper.GetInstance(); Mock <IHubContext <CpnucleoHub> > mockSignalR = SignalRHelper.GetInstance(); Guid sistemaId = Guid.NewGuid(); DateTime dataInclusao = DateTime.Now; Sistema sistema = MockEntityHelper.GetNewSistema(sistemaId); await unitOfWork.SistemaRepository.AddAsync(sistema); await unitOfWork.SaveChangesAsync(); unitOfWork.SistemaRepository.Detatch(sistema); UpdateSistemaCommand request = new() { Sistema = MockViewModelHelper.GetNewSistema(sistemaId, dataInclusao) }; GetSistemaQuery request2 = new() { Id = sistemaId }; // Act SistemaHandler handler = new(unitOfWork, mapper, mockServiceBus.Object, mockSignalR.Object); OperationResult response = await handler.Handle(request, CancellationToken.None); SistemaViewModel response2 = await handler.Handle(request2, CancellationToken.None); // Assert Assert.True(response == OperationResult.Success); Assert.True(response2 != null); Assert.True(response2.Id == sistemaId); Assert.True(response2.DataInclusao.Ticks == dataInclusao.Ticks); } }
private static void Logoff() { try { _inLogOff = true; var vs = IoC.Instance.Resolve <IViewService>(); if (!vs.CloseAll(true)) { throw new OperationException(StringResources.CantCloseSessionError); } SignalRHelper.DisconnectFromServer(); AuthenticationHelper.LogOff(); } finally { _inLogOff = false; } }
public HttpResponseMessage Enqueue() { try { LogQueryString("Enqueue"); if (GetQueryParam("QueueResult") != "bridged" && GetQueryParam("QueueResult") != "redirected") { ApiHelper.SaveOrUpdateCall(GetQueryParam("CallSid"), status: VoipCallStatus.Missed); SignalRHelper.MissCall(GetQueryParam("CallSid")); } return(GetHttpResponse(TwilioResponseHelper.Enqueue(GetQueryParam("QueueResult")))); } catch (Exception e) { Log.Error(e); throw; } }
public async Task CreateSistemaCommand_Handle() { // Arrange IUnitOfWork unitOfWork = DbContextHelper.GetContext(); IMapper mapper = AutoMapperHelper.GetMappings(); Mock <IEventHandler> mockServiceBus = ServiceBusHelper.GetInstance(); Mock <IHubContext <CpnucleoHub> > mockSignalR = SignalRHelper.GetInstance(); CreateSistemaCommand request = new() { Sistema = MockViewModelHelper.GetNewSistema() }; // Act SistemaHandler handler = new(unitOfWork, mapper, mockServiceBus.Object, mockSignalR.Object); OperationResult response = await handler.Handle(request, CancellationToken.None); // Assert Assert.True(response == OperationResult.Success); }