Beispiel #1
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 #2
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));
        }