public async void HandlesValidPresenceChange() { var users = new List<User> { new User { Id = "BADID", Presence = "away" }, new User { Id = "USERID", Presence = "away" } }; var mockState = new Mock<IBotState>(); mockState.Setup(s => s.Users) .Returns(users) .Verifiable(); var message = new PresenceChange { Type = EventType.Message, User = "******", Presence = "active" }; var handler = new PresenceHandler(); handler.BotState = mockState.Object; var result = await handler.HandleMessageAsync(message); mockState.Verify(); Assert.Equal("away", users[0].Presence); Assert.Equal("active", users[1].Presence); }
public async void IgnoresNonMatchedUser() { var users = new List <User> { new User { Id = "BADID1", Presence = "away" }, new User { Id = "BADID2", Presence = "away" } }; var mockState = new Mock <IBotState>(); mockState.Setup(s => s.Users) .Returns(users) .Verifiable(); var message = new PresenceChange { Type = EventType.Message, User = "******", Presence = "active" }; var handler = new PresenceHandler(); handler.BotState = mockState.Object; var result = await handler.HandleMessageAsync(message); mockState.Verify(); Assert.Equal("away", users[0].Presence); Assert.Equal("away", users[1].Presence); }
public void CanNotHandleInvalidPresenceMessages() { var message = new MeMessage { Type = EventType.Message }; var handler = new PresenceHandler(); var result = handler.CanHandle(message); Assert.False(result); }
public void CanHandlePresenceMessages() { var message = new PresenceChange { Type = EventType.PresenceChange }; var handler = new PresenceHandler(); var result = handler.CanHandle(message); Assert.True(result); }
/// <summary> /// Subscribes to presence events using the default key. Optionaly requests a status of the channel. /// </summary> /// <param name="channel">The name of the channel</param> /// <param name="status">Whether to request a status of the channel.</param> /// <param name="optionalHandler">A specific handler to receive presence events for this channel.</param> public void PresenceSubscribe(string channel, bool status, PresenceHandler optionalHandler = null) { if (this.DefaultKey == null) { throw EmitterException.NoDefaultKey; } this.PresenceSubscribe(this.DefaultKey, channel, status, optionalHandler); }
/// <summary> /// Requests a status of the channel using the default key. /// </summary> /// <param name="channel">The name of the channel.</param> /// <param name="optionalHandler">An optional handler, specific to this channel.</param> public void PresenceStatus(string channel, PresenceHandler optionalHandler) { if (this.DefaultKey == null) { throw EmitterException.NoDefaultKey; } this.PresenceStatus(this.DefaultKey, channel, optionalHandler); }
public void CanNotHandleInvalidPresenceMessages() { var message = new MeMessage { Type = EventType.Message }; var handler = new PresenceHandler(); var result = handler.CanHandle(message); Assert.False(result); }
public void CanHandlePresenceMessages() { var message = new PresenceChange { Type = EventType.PresenceChange }; var handler = new PresenceHandler(); var result = handler.CanHandle(message); Assert.True(result); }
/// <summary> /// Subscribes to presence events. Optionaly requests a status of the channel. /// </summary> /// <param name="key">The key for the channel</param> /// <param name="channel">The name of the channel</param> /// <param name="status">Whether to request a status of the channel.</param> /// <param name="optionalHandler">A specific handler to receive presence events for this channel.</param> public void PresenceSubscribe(string key, string channel, bool status, PresenceHandler optionalHandler = null) { if (optionalHandler != null) { this.PresenceTrie.RegisterHandler(channel, optionalHandler); } var request = new PresenceRequest(); request.Key = key; request.Channel = channel; request.Status = status; request.Changes = true; this.Publish("emitter/", "presence", Encoding.UTF8.GetBytes(request.ToJson())); }
public string ValidatePresence([FromBody] JsonInformations informations) { ResponseInfo response = new ResponseInfo(); if (informations != null) { PresenceHandler presence = new PresenceHandler(informations); List <string> presenceInformations = null; List <Tuple <string, object> > logParameters = new List <Tuple <string, object> >(); try { presenceInformations = presence.ValidatePresence(); if (presenceInformations != null) { response = new ResponseInfo { header = "Sucesso", message = presenceInformations[0] + " sua presença na aula " + presenceInformations[1] + " validada com sucesso" }; logParameters.Add(new Tuple <string, object>("@Latitude", informations.Latitude)); logParameters.Add(new Tuple <string, object>("@Longitude", informations.Longitude)); logParameters.Add(new Tuple <string, object>("@Sucess", "Y")); logParameters.Add(new Tuple <string, object>("@Error", "")); presence.InsertLog(logParameters); logParameters.Clear(); return(JsonConvert.SerializeObject(response)); } else { response = new ResponseInfo { header = "Erro", message = "Não foi possível validar sua presença" }; logParameters.Add(new Tuple <string, object>("@Latitude", informations.Latitude)); logParameters.Add(new Tuple <string, object>("@Longitude", informations.Longitude)); logParameters.Add(new Tuple <string, object>("@Sucess", "N")); logParameters.Add(new Tuple <string, object>("@Error", "Não foi possível validar sua presença")); presence.InsertLog(logParameters); logParameters.Clear(); return(JsonConvert.SerializeObject(response)); } } catch (ResponseException e) { logParameters.Add(new Tuple <string, object>("@Latitude", informations.Latitude)); logParameters.Add(new Tuple <string, object>("@Longitude", informations.Longitude)); logParameters.Add(new Tuple <string, object>("@Sucess", "N")); logParameters.Add(new Tuple <string, object>("@Error", e.Info.message)); presence.InsertLog(logParameters); logParameters.Clear(); return(JsonConvert.SerializeObject(e.Info)); } catch { response = new ResponseInfo { header = "Erro", message = "Ocorreu um erro interno, favor entrar em contato com o suporte" }; logParameters.Add(new Tuple <string, object>("@Latitude", informations.Latitude)); logParameters.Add(new Tuple <string, object>("@Longitude", informations.Longitude)); logParameters.Add(new Tuple <string, object>("@Sucess", "N")); logParameters.Add(new Tuple <string, object>("@Error", "Ocorreu um erro interno, favor entrar em contato com o suporte")); presence.InsertLog(logParameters); logParameters.Clear(); return(JsonConvert.SerializeObject(response)); } } else { response = new ResponseInfo { header = "Erro", message = "Informações inválidas recebidas pelo servidor" }; return(JsonConvert.SerializeObject(response)); } }