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()); }
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); }