private Uri GetContentsUri(ChorusAccount chorusAccount, ChorusUrl chorusUrl) { if (chorusUrl.FileId.HasValue) { return(null); } if (chorusUrl.ExperimentId.HasValue) { return(new Uri(chorusUrl.ServerUrl + "/skyline/api/contents/experiments/" + chorusUrl.ExperimentId + "/files")); // Not L10N } if (chorusUrl.ProjectId.HasValue) { return(new Uri(chorusUrl.ServerUrl + "/skyline/api/contents/projects/" + chorusUrl.ProjectId + "/experiments")); // Not L10N } if (!chorusUrl.GetPathParts().Any()) { return(null); } string topLevelName = chorusUrl.GetPathParts().First(); TopLevelContents topLevelContents = TOP_LEVEL_ITEMS.FirstOrDefault(item => item.Name.Equals(topLevelName)); if (null != topLevelContents) { return(new Uri(chorusUrl.ServerUrl + "/skyline/api/contents" + topLevelContents.ContentsPath)); // Not L10N } return(null); }
public IEnumerable <ChorusItem> ListContents(ChorusAccount chorusAccount, ChorusUrl chorusUrl) { if (!chorusUrl.GetPathParts().Any()) { return(TOP_LEVEL_ITEMS.Select( item => new ChorusItem(chorusUrl.AddPathPart(item.Name), item.Label, DataSourceUtil.FOLDER_TYPE, null, 0))); } Uri requestUri = GetContentsUri(chorusAccount, chorusUrl); ChorusContents contents; var key = new RequestKey(chorusAccount, requestUri); lock (_lock) { ChorusContentsResponse chorusContentsResponse; if (!_chorusContentsByServerUrl.TryGetValue(key, out chorusContentsResponse)) { return(new ChorusItem[0]); } contents = chorusContentsResponse.Data; } return(ListItems(chorusUrl, contents)); }