示例#1
0
        public async Task <IEnumerable <IHyperTagElement> > Timeline_Elements(
            string id,
            string realmId)
        {
            var filter = new TagItemFilterModel(id)
            {
                ServerUri = ServerUri,
                RealmId   = realmId
            };

            var utility = new TimelineUtility(_netStore);

            var tag = await utility.GetTag(filter);

            return(tag?.HyperTag.Elements.AsQueryable());
        }
示例#2
0
        public async Task <DynamicHyperTagViewModel> GetTag(
            TagItemFilterModel filter,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            if (filter == null)
            {
                throw new ArgumentException(nameof(filter));
            }
            if (string.IsNullOrWhiteSpace(filter.ServerUri))
            {
                throw new ArgumentException(nameof(filter.ServerUri));
            }

            var hyperNodeUtility = new HyperStoreUtility(filter.ServerUri, _store);

            var serverHost    = HyperStoreConnectionStringUtility.GetHost(filter.ServerUri);
            var serverPort    = HyperStoreConnectionStringUtility.GetPort(filter.ServerUri);
            var hlsServerHost = await hyperNodeUtility.GetHlsServerUriAsync(filter.ServerUri);

            var missionTags = new List <DynamicHyperTagViewModel>();

            var tagArgs = new RetrieveHyperDocumentArgs()
            {
                DocumentId = new HyperDocumentId(filter.Id, typeof(HyperTag)),
            };

            var document = await _store.ExecuteAsync(tagArgs);

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

            var hyperTag = document.GetPayload <HyperTag>();

            // TODO: Enable cache
            // var cacheElement = _tagsCache.Get<TagCacheElement>(hyperTag.Id);
            TagCacheElement cacheElement = null;

            var dynamicTag = new DynamicHyperTagViewModel();

            if (cacheElement != null)
            {
                var cacheTag = cacheElement.Tag;

                dynamicTag.ServerUri     = cacheTag.ServerUri;
                dynamicTag.ServerHost    = cacheTag.ServerHost;
                dynamicTag.ServerPort    = cacheTag.ServerPort;
                dynamicTag.HlsServerHost = cacheTag.HlsServerHost;
                dynamicTag.DynamicData   = cacheTag.DynamicData;
                dynamicTag.TagView       = cacheTag.TagView;
                dynamicTag.HyperTag      = cacheTag.HyperTag;
            }
            else
            {
                var view = await HyperTagHelper.GenerateTagView(_store, new DummyLogger(), hyperTag);

                var json    = JsonHelper.Serialize(view, false);
                var @object = JsonHelper.Deserialize(json);

                dynamicTag.ServerUri     = filter.ServerUri;
                dynamicTag.ServerHost    = serverHost;
                dynamicTag.ServerPort    = serverPort;
                dynamicTag.HlsServerHost = hlsServerHost;
                dynamicTag.DynamicData   = @object;
                dynamicTag.TagView       = view;
                dynamicTag.HyperTag      = hyperTag;

                cacheElement = new TagCacheElement()
                {
                    Tag = dynamicTag,
                };

                // TODO: Enable cache
                //_tagsCache.Set(hyperTag.Id, cacheElement, TimeSpan.FromSeconds(Settings.Instance.CacheExpiratonTagIntervalInSeconds));
            }

            return(dynamicTag);
        }