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; } }
internal string StoreXmlInCloud(SINnerUploadAble uploadFile, IFormFile uploadedFile) { string url = "default"; try { _logger.LogTrace("Storing " + uploadedFile.FileName + " to GDrive..."); UserCredential creds = AuthorizeGoogleUser(); if (creds == null) { throw new Exception("Invalid Google User"); } // Create Drive API service. BaseClientService.Initializer initializer = new BaseClientService.Initializer { HttpClientInitializer = creds, ApplicationName = "SINners", GZipEnabled = true, }; #pragma warning disable CS0219 // The variable 'cancellationToken' is assigned but its value is never used CancellationToken cancellationToken = new CancellationToken(); #pragma warning restore CS0219 // The variable 'cancellationToken' is assigned but its value is never used // Create Drive API service. var service = new DriveService(initializer); if (string.IsNullOrEmpty(_folderId)) { File fileMetadata = new File { Name = "Chummer", MimeType = "application/vnd.google-apps.folder" }; var folderid = service.Files.Create(fileMetadata).Execute(); string msg = "ChummerFolderId: " + folderid.Id; _logger.LogCritical(msg); throw new HubException("HubException: " + msg); } uploadFile.DownloadUrl = string.IsNullOrEmpty(uploadFile.GoogleDriveFileId) ? UploadFileToDrive(service, uploadedFile, _contentType, uploadFile) : UpdateFileToDrive(service, uploadedFile, _contentType, uploadFile); // Define parameters of request. FilesResource.ListRequest listRequest = service.Files.List(); listRequest.PageSize = 10; listRequest.Q = "'" + _folderId + "' in parents"; listRequest.Fields = "nextPageToken, files(id, name, webContentLink)"; // List files. IList <File> files = listRequest.Execute() .Files; url = "Folder " + _folderId + ":" + Environment.NewLine; if (files != null && files.Count > 0) { foreach (var file in files) { url += $"{file.Name} ({file.Id}): {file.WebContentLink}" + Environment.NewLine; } } else { url += " No files found."; } // Define parameters of request. listRequest = service.Files.List(); listRequest.PageSize = 10; listRequest.Fields = "nextPageToken, files(id, name, webContentLink)"; // List files. files = listRequest.Execute() .Files; url = "ParentFolder: " + Environment.NewLine; if (files != null && files.Count > 0) { foreach (var file in files) { url += $"{file.Name} ({file.Id}): {file.WebContentLink}" + Environment.NewLine; } } else { url += "No files found."; } //_logger.LogError("ParentUrl: " + url); } catch (Exception e) { _logger.LogError("Could not store file on GDrive: " + e); throw; } return(uploadFile.DownloadUrl); }
private string UpdateFileToDrive(DriveService service, IFormFile uploadFile, string conentType, SINnerUploadAble fileMetaData) { FilesResource.UpdateMediaUpload request; try { var googlefileMetadata = new File { Name = fileMetaData.FileName //Parents = new List<string> { _folderId } }; //fileMetadata.Properties = new Dictionary<string, string>(); //foreach(var tag in fileMetaData.SINnerMetaData.Tags) //{ // fileMetadata.Properties.Add(tag.Display, tag.TagValue); //} _logger.LogError("Updating " + uploadFile.FileName + " as " + googlefileMetadata.Name);// + " to folder: " + _folderId); //fileMetadata.MimeType = _contentType; googlefileMetadata.OriginalFilename = uploadFile.FileName; request = service.Files.Update(googlefileMetadata, fileMetaData.GoogleDriveFileId, uploadFile.OpenReadStream(), conentType); request.Fields = "id, webContentLink"; var uploadprogress = request.Upload(); while ((uploadprogress.Status != UploadStatus.Completed) && (uploadprogress.Status != UploadStatus.Failed)) { if (uploadprogress.Exception != null) { throw uploadprogress.Exception; } uploadprogress = request.Resume(); } if (uploadprogress.Status == UploadStatus.Failed) { _logger.LogError("Chummer \"" + fileMetaData.Id.ToString() + "\" upload failed: " + uploadprogress.Exception); throw uploadprogress.Exception; } } catch (Exception e) { Exception innere = e; while (innere.InnerException != null) { innere = innere.InnerException; } _logger.LogError(innere.ToString()); throw; } _logger.LogError("Chummer \"" + fileMetaData.Id.ToString() + "\" updated: " + request.ResponseBody?.WebContentLink); fileMetaData.GoogleDriveFileId = request.ResponseBody?.Id; fileMetaData.DownloadUrl = request.ResponseBody?.WebContentLink; //UploadFilePermission(service, chummerFile); return(request.ResponseBody?.WebContentLink); }
internal string StoreXmlInCloud(SINnerUploadAble uploadFile, IFormFile uploadedFile) { string url = "default"; try { _logger.LogTrace("Storing " + uploadedFile.FileName + " to GDrive..."); UserCredential creds = AuthorizeGoogleUser(); if (creds == null) { throw new Exception("Invalid Google User"); } // Create Drive API service. BaseClientService.Initializer initializer = new BaseClientService.Initializer() { HttpClientInitializer = (IConfigurableHttpClientInitializer)creds, ApplicationName = "SINners", GZipEnabled = true, }; CancellationToken cancellationToken = new CancellationToken(); // Create Drive API service. var service = new DriveService(initializer); if (String.IsNullOrEmpty(_folderId)) { Google.Apis.Drive.v3.Data.File fileMetadata = new Google.Apis.Drive.v3.Data.File(); fileMetadata.Name = "Chummer"; fileMetadata.MimeType = "application/vnd.google-apps.folder"; var folderid = service.Files.Create(fileMetadata).Execute(); string msg = "ChummerFolderId: " + folderid.Id; _logger.LogCritical(msg); throw new HubException("HubException: " + msg); } if (String.IsNullOrEmpty(uploadFile.GoogleDriveFileId)) { uploadFile.DownloadUrl = UploadFileToDrive(service, uploadedFile, _contentType, uploadFile); } else { uploadFile.DownloadUrl = UpdateFileToDrive(service, uploadedFile, _contentType, uploadFile); } // Define parameters of request. FilesResource.ListRequest listRequest = service.Files.List(); listRequest.PageSize = 10; listRequest.Q = "'" + _folderId + "' in parents"; listRequest.Fields = "nextPageToken, files(id, name, webContentLink)"; // List files. IList <Google.Apis.Drive.v3.Data.File> files = listRequest.Execute() .Files; url = "Folder " + _folderId + ":" + Environment.NewLine; if (files != null && files.Count > 0) { foreach (var file in files) { url += String.Format("{0} ({1}): {2}", file.Name, file.Id, file.WebContentLink) + Environment.NewLine; } } else { url += " No files found."; } // Define parameters of request. listRequest = service.Files.List(); listRequest.PageSize = 10; listRequest.Fields = "nextPageToken, files(id, name, webContentLink)"; // List files. files = listRequest.Execute() .Files; url = "ParentFolder: " + Environment.NewLine; if (files != null && files.Count > 0) { foreach (var file in files) { url += String.Format("{0} ({1}): {2}", file.Name, file.Id, file.WebContentLink) + Environment.NewLine; } } else { url += "No files found."; } //_logger.LogError("ParentUrl: " + url); } catch (Exception e) { _logger.LogError("Could not store file on GDrive: " + e.ToString()); throw; } return(uploadFile.DownloadUrl); }