Ejemplo n.º 1
0
        /// <summary>Open a file in the specified folder</summary>
        public static async Task <FileDescriptor> createFile(this Connection conn, Metadata.FolderInfo parentFolder, string name, FileMode mode, FileAccess access)
        {
            RequestBuilder req = conn.newRequest("file_open");

            req.add("flags", (long)openFlags(mode, access));
            req.add("folderid", parentFolder.id);
            req.add("name", name);
            var response = await conn.send(req);

            return(new FileDescriptor(response.dict));
        }
Ejemplo n.º 2
0
        /// <summary>Delete a folder</summary>
        public static Task deleteFolder(this Connection conn, Metadata.FolderInfo folder, bool recursively = false)
        {
            if (null == folder || 0 == folder.id)
            {
                throw new ArgumentException("The root folder can't be deleted");
            }
            RequestBuilder req = conn.newRequest(recursively ? "deletefolderrecursive" : "deletefolder");

            req.add("folderid", folder.id);
            req.unixTimestamps();

            return(conn.send(req));
        }
Ejemplo n.º 3
0
        /// <summary>Upload a file.</summary>
        public static async Task <Metadata.FileInfo> uploadFile(this Connection conn, Metadata.FolderInfo folder, string name, Stream sourceStream, bool noPartial = true, bool renameIfExists = false)
        {
            sourceStream.rewind();
            var req = conn.newRequest("uploadfile", sourceStream.Length);

            req.add("folderid", folder.id);
            req.add("filename", name);
            if (noPartial)
            {
                req.add("nopartial", true);
            }
            if (renameIfExists)
            {
                req.add("renameifexists", true);
            }
            req.unixTimestamps();

            var response = await conn.upload(req, sourceStream);

            return(new Metadata.FileInfo(response.metadata()));
        }
Ejemplo n.º 4
0
		/// <summary>List all files in the folder</summary>
		public static Task<Metadata.FileInfo[]> getFiles( this Connection conn, Metadata.FolderInfo fi )
		{
			return conn.getFiles( fi.id );
		}
Ejemplo n.º 5
0
 /// <summary>Move a folder</summary>
 public static Task <Metadata.FolderInfo> moveFolder(this Connection conn, Metadata.FolderInfo folder, Metadata.FolderInfo newParent)
 {
     return(conn.renameFolder(folder, null, newParent));
 }
Ejemplo n.º 6
0
 /// <summary>Rename a folder</summary>
 public static Task <Metadata.FolderInfo> renameFolder(this Connection conn, Metadata.FolderInfo folder, string newName)
 {
     return(conn.renameFolder(folder, newName, null));
 }
Ejemplo n.º 7
0
        /// <summary>Rename and/or move a folder</summary>
        public static async Task <Metadata.FolderInfo> renameFolder(this Connection conn, Metadata.FolderInfo folder, string newName, Metadata.FolderInfo newParent)
        {
            if (null == folder || 0 == folder.id)
            {
                throw new ArgumentException("The root folder can't be renamed");
            }

            if (string.IsNullOrEmpty(newName) && null == newParent)
            {
                throw new ArgumentException("Neither new name nor new parent is specified.");
            }

            RequestBuilder req = conn.newRequest("renamefolder");

            req.add("folderid", folder.id);
            if (!string.IsNullOrEmpty(newName))
            {
                req.add("toname", newName);
            }
            if (null != newParent)
            {
                req.add("tofolderid", newParent.id);
            }
            req.unixTimestamps();

            var response = await conn.send(req);

            return(new Metadata.FolderInfo(response.metadata()));
        }
Ejemplo n.º 8
0
        /// <summary>Create a folder</summary>
        /// <param name="name">Name of the new folder</param>
        /// <param name="parent">Parent folder, or null to create a top-level one</param>
        /// <param name="getExisting">true to get an existing one if it exists, false to fail</param>
        public static async Task <Metadata.FolderInfo> createFolder(this Connection conn, string name, Metadata.FolderInfo parent = null, bool getExisting = true)
        {
            RequestBuilder req = conn.newRequest(getExisting ? "createfolderifnotexists" : "createfolder");

            req.add("folderid", parent?.id ?? 0L);
            req.add("name", name);
            req.unixTimestamps();

            var response = await conn.send(req);

            return(new Metadata.FolderInfo(response.metadata()));
        }