Exemple #1
0
        public async Task <FileSystemResult <IDirectory> > CreateDirectoryAsync(string name, Dictionary <string, object> properties)
        {
            if (properties == null)
            {
                properties = new Dictionary <string, object>();
            }
            CreateDirectoryRequest req = new CreateDirectoryRequest();

            req.Name   = name;
            req.Folder = new Folder();
            string requesturl = CreateDir.FormatRest(this is OneDriveRoot ? "root" : Id);
            FileSystemResult <ExpandoObject> ex = await FS.OAuth.CreateMetadataStream <ExpandoObject>(requesturl, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(req)), "application/json");

            if (ex.IsOk)
            {
                string id;
                if (InternalTryGetProperty(ex.Result, "id", out id))
                {
                    FileSystemResult <ExpandoObject> ex2 =
                        await FS.OAuth.CreateMetadataStream <ExpandoObject>(Item.FormatRest(FS.OneDriveUrl, id));

                    OneDriveDirectory dir = new OneDriveDirectory(FullName, FS)
                    {
                        Parent = this
                    };
                    dir.SetData(JsonConvert.SerializeObject(ex.Result));
                    FS.Refs[dir.FullName] = dir;
                    _directories.Add(dir);
                    return(new FileSystemResult <IDirectory>(dir));
                }
                return(new FileSystemResult <IDirectory>("Unable to get id from the created directory"));
            }
            return(new FileSystemResult <IDirectory>(ex.Error));
        }
Exemple #2
0
        public async Task <FileSystemResult> PopulateAsync()
        {
            FileSystemResult r = await FS.OAuth.MayRefreshToken();

            if (!r.IsOk)
            {
                return(r);
            }
            string url = ListChildrens.FormatRest(this is OneDriveRoot ? "root" : Id);
            FileSystemResult <dynamic> fr = await this.List(url);

            if (!fr.IsOk)
            {
                return(new FileSystemResult(fr.Error));
            }
            _files = new List <OneDriveFile>();
            List <IDirectory> dirlist = new List <IDirectory>();

            foreach (dynamic v in fr.Result)
            {
                if (v.folder != null)
                {
                    OneDriveDirectory dir = new OneDriveDirectory(FullName, FS)
                    {
                        Parent = this
                    };
                    dir.SetData(JsonConvert.SerializeObject(v));
                    if ((dir.Attributes & ObjectAttributes.Trashed) != ObjectAttributes.Trashed)
                    {
                        dirlist.Add(dir);
                    }
                }
                else
                {
                    OneDriveFile file = new OneDriveFile(FullName, FS)
                    {
                        Parent = this
                    };
                    file.SetData(JsonConvert.SerializeObject(v));
                    _files.Add(file);
                }
            }
            FS.Refs.AddDirectories(dirlist, this);
            _directories = dirlist.Cast <OneDriveDirectory>().ToList();
            IsPopulated  = true;
            return(new FileSystemResult());
        }