public async Task <IActionResult> GetBrandImage(string spaceId)
        {
            ICollection <DigitalTwinsSpace> spaces = await _topologyClient.GetBrandLevelSpaces();

            DigitalTwinsSpace space     = spaces.FirstOrDefault(s => s.id == spaceId);
            Property          imagePath = space?.properties?.SingleOrDefault(p => string.Equals(p.name, "ImagePath", StringComparison.InvariantCultureIgnoreCase));

            if (!Uri.TryCreate(imagePath?.value, UriKind.Absolute, out Uri uri))
            {
                return(NotFound());
            }
            else
            {
                byte[] imageResult = await _digitalTwinsClient.GetFromDigitalTwinsAsBytes(uri.AbsoluteUri);

                return(File(imageResult, "image/png"));
            }
        }
        private string[] GetAncestorSpaceIds(DigitalTwinsSpace childSpace, Dictionary <string, DigitalTwinsSpace> ancestorSpacesById)
        {
            var ancestorSpaceIds = new List <string>();

            DigitalTwinsSpace nextSpace = childSpace;

            while (!string.IsNullOrWhiteSpace(nextSpace.parentSpaceId))
            {
                ancestorSpaceIds.Add(nextSpace.parentSpaceId);
                if (ancestorSpacesById.TryGetValue(nextSpace.parentSpaceId, out DigitalTwinsSpace parentSpace))
                {
                    nextSpace = parentSpace;
                }
                else
                {
                    break;
                }
            }

            return(ancestorSpaceIds.ToArray());
        }
        private string GetFriendlySpaceIdentifier(DigitalTwinsSpace space, Dictionary <string, DigitalTwinsSpace> firstFourLevelsTopology)
        {
            string identifier = string.Empty;

            if (IsTypeNeededForFriendlyIdentifier(space.type))
            {
                identifier = space.friendlyName;
            }

            if (!string.IsNullOrWhiteSpace(space.parentSpaceId) &&
                firstFourLevelsTopology.TryGetValue(space.parentSpaceId, out DigitalTwinsSpace parentSpace))
            {
                string parentIdentifier = GetFriendlySpaceIdentifier(parentSpace, firstFourLevelsTopology);
                if (!string.IsNullOrWhiteSpace(parentIdentifier))
                {
                    identifier = string.IsNullOrWhiteSpace(identifier) ? parentIdentifier : $"{parentIdentifier} -> {identifier}";
                }
            }

            return(identifier);
        }