Beispiel #1
0
        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);
        }
Beispiel #2
0
        public override IEnumerable <RemoteItem> ListContents(MsDataFileUri parent)
        {
            var chorusUrl = (ChorusUrl)parent;

            if (!chorusUrl.GetPathParts().Any())
            {
                return(TOP_LEVEL_ITEMS.Select(
                           item => new RemoteItem(chorusUrl.AddPathPart(item.Name), item.Label, DataSourceUtil.FOLDER_TYPE, null, 0)));
            }
            Uri            requestUri = GetContentsUri(ChorusAccount, chorusUrl);
            ChorusContents contents;

            if (!TryGetData(requestUri, out contents) || contents == null)
            {
                return(new RemoteItem[0]);
            }
            return(ListItems(chorusUrl, contents));
        }
Beispiel #3
0
        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));
        }