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