Ejemplo n.º 1
0
        private RokuDefinition MergeRoku(IRokuRemote roku, string name)
        {
            RokuDefinition result;

            var rokuIp = roku.Url.Host;

            if (_rokus.ContainsKey(roku.Info.Id))
            {
                //Updating an existing entry.
                Logger.LogInformation("Merging existing Roku #{id} into list.");
                result = _rokus[roku.Info.Id];
                //Override the name and ip.
                result.Name = !string.IsNullOrWhiteSpace(name?.Trim()) ? name.Trim()
                    : result.Name;

                result.IPAddress = rokuIp;
            }
            else
            {
                //Adding a new entry.
                Logger.LogInformation("Adding Roku #{id} to list.");

                //First use the name parameter, then use the Roku's name, if neither then no name.
                var rokuName = !string.IsNullOrWhiteSpace(name?.Trim()) ? name.Trim()
                     : !string.IsNullOrEmpty(roku.Info.UserDeviceName) ? roku.Info.UserDeviceName
                     : null;

                result = new RokuDefinition
                {
                    Id        = roku.Info.Id,
                    Name      = rokuName,
                    IPAddress = rokuIp,
                    Roku      = roku
                };
                _rokus[result.Id] = result;
            }
            Logger.LogInformation("Name: {name}, IP: {ip}", result.Name, result.IPAddress);

            return(result);
        }
Ejemplo n.º 2
0
        public async Task <RokuDefinition> AddRokuAsync(IPAddress ip, string name = null)
        {
            using (Logger.BeginScope("AddRokuAsync"))
            {
                Logger.LogInformation("ip: {ip}, name: {name}", ip, name);
                var roku = await DiscoverRoku(ip);

                if (roku == null)
                {
                    return(null);
                }

                RokuDefinition result = null;

                lock (_lockObj)
                {
                    result = MergeRoku(roku, name);
                    SerializeRokus();
                }

                return(result);
            }
        }