/// <summary> /// Moves file from one folder to another /// </summary> /// <param name="fileOrFolderId">Id of file or folder which yu want to move</param> /// <param name="newFolderId">Id of folder to which you want to move a file</param> /// <returns>PGDriveResult with moved file in response body</returns> public PGDriveResult <File> MoveFileToAntherFolder(string fileOrFolderId, string newFolderId) { PGDriveResult <File> pGDriveResult = new PGDriveResult <File>(); try { var getRequest = driveService.Files.Get(fileOrFolderId); var folderGetRequest = driveService.Files.Get(newFolderId); folderGetRequest.Fields = "mimeType"; var folder = folderGetRequest.Execute(); if (!folder.MimeType.Contains("folder")) { throw CustomExceptions.isNotAFolder(newFolderId, driveService); } getRequest.Fields = "parents"; var file = getRequest.Execute(); var previousParents = String.Join(",", file.Parents); var updateRequest = driveService.Files.Update(new File(), fileOrFolderId); updateRequest.Fields = "id, parents"; updateRequest.AddParents = newFolderId; updateRequest.RemoveParents = previousParents; file = updateRequest.Execute(); pGDriveResult.SetResponseBody(file); return(pGDriveResult); } catch (Google.GoogleApiException exception) { pGDriveResult.InitializeError(exception); return(pGDriveResult); } }
/// <summary> /// Uploads a file to a drive /// </summary> /// <param name="stream">Stream of your file to upload</param> /// <param name="contentType">MimeType of a file</param> /// <param name="body">Metadata of future file</param> /// <param name="parentFolderId">Id of parent folder for a new file</param> /// <returns>PGDriveResult which contains uploaded file metadata in response body</returns> public PGDriveResult <File> CreateFile(System.IO.Stream stream, string contentType, File body, string parentFolderId = null) { PGDriveResult <File> pGDriveResult = new PGDriveResult <File>(); try { FilesResource.CreateMediaUpload request; if (parentFolderId != null) { var folder = driveService.Files.Get(parentFolderId).Execute(); if (!folder.MimeType.Contains("folder")) { throw CustomExceptions.isNotAFolder(parentFolderId, driveService); } body.Parents = new List <string>() { parentFolderId }; } request = driveService.Files.Create(body, stream, contentType); request.Fields = DefaultFileFieldsOnResponse; request.Upload(); var file = request.ResponseBody; pGDriveResult.SetResponseBody(file); return(pGDriveResult); } catch (Google.GoogleApiException exception) { pGDriveResult.InitializeError(exception); return(pGDriveResult); } }
/// <summary> /// Creates a folder at the drive /// </summary> /// <param name="name">Name of folder</param> /// <param name="parentFolderId">Id of parent folder for new folder</param> /// <returns>PGDriveResult which contains created folder metadata in response body</returns> public PGDriveResult <File> CreateFolder(string name, string parentFolderId = null) { PGDriveResult <File> pGDriveResult = new PGDriveResult <File>(); try { FilesResource.CreateRequest request; var fileMetadata = new File(); fileMetadata.Name = name; fileMetadata.MimeType = "application/vnd.google-apps.folder"; if (parentFolderId != null) { var folder = driveService.Files.Get(parentFolderId).Execute(); if (!folder.MimeType.Contains("folder")) { throw CustomExceptions.isNotAFolder(parentFolderId, driveService); } fileMetadata.Parents = new List <string>() { parentFolderId }; } request = driveService.Files.Create(fileMetadata); request.Fields = DefaultFileFieldsOnResponse; var file = request.Execute(); pGDriveResult.SetResponseBody(file); return(pGDriveResult); } catch (Google.GoogleApiException exception) { pGDriveResult.InitializeError(exception); return(pGDriveResult); } }
/// <summary> /// Uploads a fiile to a drive /// </summary> /// <param name="filePath">Path to file which you want to upload</param> /// <param name="name">Future name of the file</param> /// <param name="parentFolderId"></param> /// <returns>PGDriveResult which contains created folder metadata in response body</returns> public PGDriveResult <File> CreateFile(string filePath, string name = null, string parentFolderId = null) { PGDriveResult <File> pGDriveResult = new PGDriveResult <File>(); try { FilesResource.CreateMediaUpload request; filePath = System.IO.Path.GetFullPath(filePath); using (var stream = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read)) { var fileMetadata = new File(); if (name != null) { fileMetadata.Name = name; } if (parentFolderId != null) { var folder = driveService.Files.Get(parentFolderId).Execute(); if (!folder.MimeType.Contains("folder")) { throw CustomExceptions.isNotAFolder(parentFolderId, driveService); } fileMetadata.Parents = new List <string>() { parentFolderId }; } string mimeType = MimeMapping.GetMimeMapping(filePath); request = driveService.Files.Create(fileMetadata, stream, mimeType); request.Fields = DefaultFileFieldsOnResponse; request.Upload(); } var file = request.ResponseBody; pGDriveResult.SetResponseBody(file); return(pGDriveResult); } catch (Google.GoogleApiException exception) { pGDriveResult.InitializeError(exception); return(pGDriveResult); } }