Пример #1
0
        // Returns google request which once executed makes spreadsheet view access allowed for specified domain
        internal static BatchRequest GetAssureViewIsDomainPermittedRequest(DriveService driveService, string spreadsheetId, string domain)
        {
            // Construct new instance of batch request
            BatchRequest batchRequest = new BatchRequest(driveService);

            // Build instance of permission class, indicating view access for the specified domain.
            Permission domainPermission = new Permission()
            {
                Type   = "domain",
                Role   = "reader",
                Domain = domain
            };

            // Construct appropriate permission resources partial request to allow specified domain spreadsheet view.
            PermissionsResource.CreateRequest domainCanViewRequest = driveService.Permissions.Create(domainPermission, spreadsheetId);
            domainCanViewRequest.Fields = "id";

            // Add partial permission resources domainCanViewRequest into the batch update queue.
            batchRequest.Queue <Permission>(domainCanViewRequest, new BatchRequest.OnResponse <Permission>((permission, error, index, message) =>
            {
                // On request response... if any error found throw appropriate exception.
                if (error != null)
                {
                    throw new InvalidOperationException($"Google drive apis is unable to provide domain specific view permission for the spreadsheet id: {spreadsheetId} Read request error message for more details: {error.Message}");
                }
            }));

            return(batchRequest);
        }
Пример #2
0
        // Returns google request which once executed makes spreadsheet edit access allowed for specified email address
        internal static BatchRequest GetAssureEditIsEmailPermittedRequest(DriveService driveService, string spreadsheetId, string email)
        {
            // Construct new instance of batch request
            BatchRequest batchRequest = new BatchRequest(driveService);

            // Build instance of permission class, indicating specified email address edit access.
            Permission emailAddressPermission = new Permission()
            {
                Type         = "user",
                Role         = "writer",
                EmailAddress = email
            };

            // Construct appropriate permission resources partial request to allow specified email address spreadsheet edit access.
            PermissionsResource.CreateRequest emailAddressCanEditRequest = driveService.Permissions.Create(emailAddressPermission, spreadsheetId);
            emailAddressCanEditRequest.Fields = "id";

            // Add partial permission resources emailAddressCanEditRequest into the batch update queue.
            batchRequest.Queue <Permission>(emailAddressCanEditRequest, new BatchRequest.OnResponse <Permission>((permission, error, index, message) =>
            {
                // On request response... if any error found throw appropriate exception.
                if (error != null)
                {
                    throw new InvalidOperationException($"Google drive apis is unable to provide email address specific view permission for the spreadsheet id: {spreadsheetId} Read request error message for more details: {error.Message}");
                }
            }));

            return(batchRequest);
        }
Пример #3
0
        ///
        /// Insert a new permission.
        /// service - Drive API service instance.
        /// fileId - ID of the file to insert permission for.
        /// emailuser - User or group e-mail address, domain name or null for "default" type.
        /// type - The value "user", "group", "domain" or "anyone".
        /// role - The value "owner", "writer" or "reader".
        /// The inserted permission, null is returned if an API error occurred

        public static Permission InsertPermission(DriveService service,
                                                  string fileId,
                                                  string emailuser,
                                                  string type,
                                                  string role)
        {
            Permission newPermission = new Permission();

            if (emailuser != null && emailuser != "")
            {
                newPermission.EmailAddress = emailuser;
            }
            newPermission.Type = type;
            newPermission.Role = role;
            try
            {
                PermissionsResource.CreateRequest request =
                    service.Permissions.Create(newPermission, fileId);
                request.Fields = "id";
                return(request.Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.ToString());
            }
            return(null);
        }
        public static GoogleDriveResultWithData <GoogleDrivePermission> SetResourcePermissions(Connection connection, string fileOrFolderId, GoogleDrivePermission permission)
        {
            CheckConnectionOrException(connection);
            CheckPermissionOrException(permission);

            PermissionsResource.CreateRequest request = connection.Service.Permissions.Create(new Permission()
            {
                EmailAddress = permission.Email,
                Type         = permission.Type.ToString(),
                Role         = permission.Role.ToString()
            }, fileOrFolderId);

            GoogleDriveResultWithData <GoogleDrivePermission> result = ExecuteRequest <PermissionsResource.CreateRequest, Permission, GoogleDriveResultWithData <GoogleDrivePermission> >(request, (resp, res) =>
            {
                res.Data = new GoogleDrivePermission(resp.Id, resp.EmailAddress, permission.Type, permission.Role);
            });

            return(result);
        }
Пример #5
0
        private void UploadFilePermission(DriveService service, SINner chummerFile)
        {
            try
            {
                Google.Apis.Drive.v3.Data.Permission permission = new Google.Apis.Drive.v3.Data.Permission();
                permission.Type = "anyone";
                permission.Role = "reader";
                permission.AllowFileDiscovery = true;

                PermissionsResource.CreateRequest request = service.Permissions.Create(permission, chummerFile.GoogleDriveFileId);
                request.Fields = "id";
                request.Execute();
            }
            catch (Exception e)
            {
                string msg = "Error while setting permissions for " + chummerFile.Id + ": " + Environment.NewLine;
                msg += e.ToString();
                _logger.LogError(msg);
                throw;
            }
        }
        /// <summary>
        /// Insert a new permission.
        /// </summary>
        /// <param name="service">Drive API service instance.</param>
        /// <param name="fileId">ID of the file to insert permission for.</param>
        /// <param name="who">
        /// User or group e-mail address, domain name or null for "default" type.
        /// </param>
        /// <param name="type">The value "user", "group", "domain" or "default".</param>
        /// <param name="role">The value "owner", "writer" or "reader".</param>
        /// <returns>The inserted permission, null is returned if an API error occurred</returns>
        public static Permission InsertPermission(DriveService service, File file)
        {
            Permission newPermission = new Permission
            {
                Role         = "writer",
                EmailAddress = owneremail,
                Type         = "user"
            };

            try
            {
                PermissionsResource.CreateRequest cc = new PermissionsResource.CreateRequest(service, newPermission, file.Id);
                //cc.TransferOwnership = true; // acknowledge transfer of ownership - must be set to "true" in order for role to change to "owner"
                return(cc.Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);
            }
            return(null);
        }
Пример #7
0
 private void Request_ResponseReceived(Google.Apis.Drive.v3.Data.File obj)
 {
     if (obj != null)
     {
         Console.WriteLine("File was uploaded sucessfully--" + obj.Id);
         Console.WriteLine("Getting shareable link...");
         //완료되면 공유 가능한 링크를 받으세요:
         string fileId = obj.Id;
         Google.Apis.Drive.v3.Data.Permission permission = new Google.Apis.Drive.v3.Data.Permission();
         permission.Type = "anyone";
         permission.Role = "reader";
         permission.AllowFileDiscovery = true;
         PermissionsResource.CreateRequest request = service.Permissions.Create(permission, fileId);
         try
         {
             request.Fields = "*";
             request.Execute();
         }
         catch (Exception e)
         {
             Console.WriteLine("Exception: " + e.Message);
         }
         FilesResource.ListRequest listRequest = service.Files.List();
         listRequest.Fields = "*";
         List <Google.Apis.Drive.v3.Data.File> files;
         Google.Apis.Drive.v3.Data.File        myFile = null;
         try
         {
             files  = listRequest.Execute().Files.ToList();
             myFile = files.Single(f => f.Id == fileId);
         }
         catch (Exception e)
         {
             Console.WriteLine("Exception2: " + e.Message);
         }
         string shareableLink = myFile.WebContentLink;
         Console.WriteLine("Shareable link to file: " + shareableLink);
     }
 }
Пример #8
0
        private void UploadFilePermission(DriveService service, SINnerUploadAble fileMetaData)
        {
            try
            {
                Permission permission = new Permission
                {
                    Type = "anyone",
                    Role = "reader",
                    AllowFileDiscovery = true
                };

                PermissionsResource.CreateRequest request = service.Permissions.Create(permission, fileMetaData.GoogleDriveFileId);
                request.Fields = "id";
                request.Execute();
            }
            catch (Exception e)
            {
                string msg = "Error while setting permissions for " + fileMetaData.Id + ": " + Environment.NewLine;
                msg += e.ToString();
                _logger.LogError(msg);
                throw;
            }
        }
        public static string UploadFile(string FileName, string FolderName, Stream InputStream, string ContentType, int TypeFolder, string ShareWithEmail = null)
        {
            string SubFolderName;

            switch (TypeFolder)
            {
            case 1:
                SubFolderName = "Hội nghị";
                break;

            case 2:
                SubFolderName = "Nghiên cứu khoa học";
                break;

            case 3:
                SubFolderName = "Bằng sáng chế";
                break;

            default:
                throw new ArgumentException("Loại folder không tồn tại");
            }

            string ResearcherFolderName = ShareWithEmail.Split('@')[0];

            var ResearcherFolder = FindFirstFolder(ResearcherFolderName, ParentDrive) ?? CreateFolder(ResearcherFolderName, ParentDrive);

            var SubFolder = FindFirstFolder(SubFolderName, ResearcherFolder.Id) ?? CreateFolder(SubFolderName, ResearcherFolder.Id);

            var folder = FindFirstFolder(FolderName, SubFolder.Id) ?? CreateFolder(FolderName, SubFolder.Id);

            var fileMetadata = new Google.Apis.Drive.v3.Data.File()
            {
                Name    = FileName,
                Parents = new List <string>
                {
                    folder.Id
                }
            };

            FilesResource.CreateMediaUpload request = driveService.Files.Create(fileMetadata, InputStream, ContentType);
            // Cấu hình thông tin lấy về là ID
            request.Fields            = "id,webViewLink";
            request.SupportsAllDrives = true;
            request.Upload();

            // Trả về thông tin file đã được upload lên Google Drive
            var file = request.ResponseBody;

            if (ShareWithEmail != null)
            {
                Permission userPermission = new Permission
                {
                    Type         = "user",
                    Role         = "reader",
                    EmailAddress = ShareWithEmail
                };

                PermissionsResource.CreateRequest createRequest = driveService.Permissions.Create(userPermission, file.Id);
                createRequest.SupportsAllDrives = true;
                createRequest.Execute();
            }

            return(file.WebViewLink);
        }