// 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); }
// 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); }
/// /// 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); }
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); }
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); } }
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); }