public bool TryProccesMessage(BaseIdentifiableMessage receivedCommand, out BaseIdentifiableMessage result) { var processor = this.commandProcessors.FirstOrDefault(x => x.CanProcess(receivedCommand)); if (processor == null) { Trace.WriteLine($"[MockHassServer] No Command processor found for received message '{receivedCommand.Type}'"); result = null; return(false); } result = processor.ProccessCommand(this, receivedCommand); return(true); }
public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is GetConfigMessage;
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { var configuration = MockHassModelFactory.ConfigurationFaker.Generate(); var resultObject = new JRaw(HassSerializer.SerializeObject(configuration)); return(this.CreateResultMessageWithResult(resultObject)); }
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { return(new PongMessage()); }
public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is CallServiceMessage;
public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is SearchRelatedMessage;
public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is RenderTemplateMessage;
public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is EntitySourceMessage;
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { var objs = MockHassModelFactory.PanelInfoFaker.Generate(10).ToDistinctDictionary(x => x.ComponentName); var resultObject = new JRaw(HassSerializer.SerializeObject(objs)); return(this.CreateResultMessageWithResult(resultObject)); }
public abstract bool CanProcess(BaseIdentifiableMessage receivedCommand);
public abstract BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand);
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { if (receivedCommand is SubscribeEventsMessage subscribeMessage) { var eventType = subscribeMessage.EventType ?? KnownEventTypes.Any.ToEventTypeString(); if (!this.subscribersByEventType.TryGetValue(eventType, out var subcribers)) { subcribers = new List <uint>(); this.subscribersByEventType.Add(eventType, subcribers); } subcribers.Add(subscribeMessage.Id); return(this.CreateResultMessageWithResult(null)); } else if (receivedCommand is UnsubscribeEventsMessage unsubscribeMessage) { foreach (var item in this.subscribersByEventType.Values) { if (item.Remove(unsubscribeMessage.SubscriptionId)) { //success = true; break; } } } return(this.CreateResultMessageWithResult(null)); }
public override bool CanProcess(BaseIdentifiableMessage receivedCommand) { return(receivedCommand is SubscribeEventsMessage || receivedCommand is UnsubscribeEventsMessage); }
public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is RawCommandMessage && receivedCommand.Type.StartsWith(this.apiPrefix) && this.IsValidCommandType(receivedCommand.Type);
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { using (var stream = this.GetResourceStream("GetServicesResponse.json")) using (var sr = new StreamReader(stream)) using (var reader = new JsonTextReader(sr)) { var resultObject = JRaw.Create(reader); return(this.CreateResultMessageWithResult(resultObject)); } }
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { try { if (!this.isContextReady) { this.isContextReady = true; this.PrepareHassContext(context); } var merged = (receivedCommand as RawCommandMessage).MergedObject as JToken; var commandType = receivedCommand.Type; object result = null; if (commandType.EndsWith("list")) { result = this.ProccessListCommand(context, merged); } else if (commandType.EndsWith("create")) { result = this.ProccessCreateCommand(context, merged); } else if (commandType.EndsWith("delete")) { result = this.ProccessDeleteCommand(context, merged); } else if (commandType.EndsWith("update")) { result = (object)this.ProccessUpdateCommand(context, merged) ?? ErrorCodes.NotFound; } else { result = this.ProccessUnknownCommand(commandType, context, merged); } if (result is ErrorCodes errorCode) { return(this.CreateResultMessageWithError(new ErrorInfo(errorCode))); } else { var resultObject = new JRaw(HassSerializer.SerializeObject(result)); return(this.CreateResultMessageWithResult(resultObject)); } } catch (Exception ex) { return(this.CreateResultMessageWithError(new ErrorInfo(ErrorCodes.UnknownError) { Message = ex.Message })); } }
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { var rawCommand = (RawCommandMessage)receivedCommand; var messageType = rawCommand.Type; return(new ResultMessage() { Success = true }); }
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { var commandEntitySource = receivedCommand as EntitySourceMessage; IEnumerable <EntitySource> objs; if (commandEntitySource.EntityIds?.Count() > 0) { objs = MockHassModelFactory.EntitySourceFaker.GenerateWithEntityIds(commandEntitySource.EntityIds); } else { objs = MockHassModelFactory.EntitySourceFaker.Generate(10); } var resultObject = new JRaw(HassSerializer.SerializeObject(objs.ToDistinctDictionary(x => x.EntityId))); return(this.CreateResultMessageWithResult(resultObject)); }
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { var callServiceMsg = receivedCommand as CallServiceMessage; var state = new StateModel() { Context = MockHassModelFactory.ContextFaker.Generate() }; var resultObject = new JRaw(HassSerializer.SerializeObject(state)); return(this.CreateResultMessageWithResult(resultObject)); }
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { var commandRenderTemplate = receivedCommand as RenderTemplateMessage; this.entityIds = new HashSet <string>(); var result = Regex.Replace(commandRenderTemplate.Template, @"{{ (.*) }}", this.RenderTemplateValue); var listeners = new ListenersTemplateInfo() { All = false, Time = false, }; listeners.Entities = this.entityIds.ToArray(); listeners.Domains = listeners.Entities.Select(x => x.GetDomain()).ToArray(); this.entityIds = null; var renderTemplateEvent = new TemplateEventInfo() { Result = result, Listeners = listeners, }; var eventMsg = new EventResultMessage() { Id = commandRenderTemplate.Id, Event = new JRaw(HassSerializer.SerializeObject(renderTemplateEvent)) }; Task.Factory.StartNew(async() => { await Task.Delay(40); await context.SendMessageAsync(eventMsg, CancellationToken.None); }); return(this.CreateResultMessageWithResult(null)); }
public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand) { var searchMessage = receivedCommand as SearchRelatedMessage; var resultResponse = new SearchRelatedResponse(); if (searchMessage.ItemType == ItemTypes.Entity && searchMessage.ItemId == "light.bed_light") { var faker = new Faker(); resultResponse.AreaIds = new[] { faker.RandomUUID() }; resultResponse.AutomationIds = new[] { faker.RandomUUID() }; resultResponse.ConfigEntryIds = new[] { faker.RandomUUID() }; resultResponse.DeviceIds = new[] { faker.RandomUUID() }; resultResponse.EntityIds = new[] { faker.RandomEntityId() }; } var resultObject = new JRaw(HassSerializer.SerializeObject(resultResponse)); return(this.CreateResultMessageWithResult(resultObject)); }