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);
        }
Ejemplo n.º 2
0
 public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is GetConfigMessage;
Ejemplo n.º 3
0
        public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand)
        {
            var configuration = MockHassModelFactory.ConfigurationFaker.Generate();
            var resultObject  = new JRaw(HassSerializer.SerializeObject(configuration));

            return(this.CreateResultMessageWithResult(resultObject));
        }
Ejemplo n.º 4
0
 public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand)
 {
     return(new PongMessage());
 }
 public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is CallServiceMessage;
Ejemplo n.º 6
0
 public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is SearchRelatedMessage;
 public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is RenderTemplateMessage;
Ejemplo n.º 8
0
 public override bool CanProcess(BaseIdentifiableMessage receivedCommand) => receivedCommand is EntitySourceMessage;
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
 public abstract bool CanProcess(BaseIdentifiableMessage receivedCommand);
Ejemplo n.º 11
0
 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);
Ejemplo n.º 15
0
 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
                }));
            }
        }
Ejemplo n.º 17
0
        public override BaseIdentifiableMessage ProccessCommand(MockHassServerRequestContext context, BaseIdentifiableMessage receivedCommand)
        {
            var rawCommand  = (RawCommandMessage)receivedCommand;
            var messageType = rawCommand.Type;

            return(new ResultMessage()
            {
                Success = true
            });
        }
Ejemplo n.º 18
0
        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));
        }
Ejemplo n.º 21
0
        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));
        }