Example #1
0
        /// <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);
            }
        }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        /// <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);
            }
        }
Example #4
0
        /// <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);
            }
        }