Esempio n. 1
0
        public async Task <FileSystemResult> PopulateAsync()
        {
            using (await _populateLock.LockAsync())
            {
                FileSystemResult r = await FS.CheckExpirations();

                if (!r.IsOk)
                {
                    return(r);
                }
                string url = AmazonList.FormatRest(FS.OAuth.EndPoint.MetadataUrl, Id);
                FileSystemResult <dynamic> fr = await List(url);

                if (!fr.IsOk)
                {
                    return(new FileSystemResult(fr.Error));
                }
                IntFiles = new List <AmazonFile>();
                List <IDirectory> dirlist = new List <IDirectory>();
                foreach (dynamic v in fr.Result)
                {
                    if (v.kind == "FOLDER")
                    {
                        AmazonDirectory dir = new AmazonDirectory(FullName, FS)
                        {
                            Parent = this
                        };
                        dir.SetData(JsonConvert.SerializeObject(v));
                        if ((dir.Attributes & ObjectAttributes.Trashed) != ObjectAttributes.Trashed)
                        {
                            dirlist.Add(dir);
                        }
                    }
                    else if (v.kind == "FILE")
                    {
                        AmazonFile f = new AmazonFile(FullName, FS)
                        {
                            Parent = this
                        };
                        f.SetData(JsonConvert.SerializeObject(v));
                        if ((f.Attributes & ObjectAttributes.Trashed) != ObjectAttributes.Trashed)
                        {
                            IntFiles.Add(f);
                        }
                    }
                }
                FS.Refs.AddDirectories(dirlist, this);
                IntDirectories = dirlist.Cast <AmazonDirectory>().ToList();
                IsPopulated    = true;
                return(new FileSystemResult());
            }
        }