public static async Task <bool> UploadGoogleFile(string fileName, string fileId)
        {
            if (!System.IO.File.Exists(fileName) || !Storage.xs.Settings.IsGDriveOn())
            {
                return(false);
            }

            byte[] byteArray = System.IO.File.ReadAllBytes(fileName);
            System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);

            try
            {
                File body = new File();
                FilesResource.UpdateMediaUpload req = _service.Files.Update(body, fileId, stream, "application/json");
                var progress = await req.UploadAsync();

                File response = req.ResponseBody;
            }
            catch (Exception)
            {
                return(false);
            }

            return(true);
        }
Esempio n. 2
0
        //--------------------------------------------------------------------------------------------------
        public static async Task <Google.Apis.Drive.v3.Data.File> UpdateFileAsync(string fileId, Stream stream, string mimeType = "application/octet-stream")
        {
            Google.Apis.Drive.v3.Data.File  body = new Google.Apis.Drive.v3.Data.File();
            FilesResource.UpdateMediaUpload req  = Service.Files.Update(body, fileId, stream, mimeType);
            //req.KeepRevisionForever = true;
            await req.UploadAsync();

            return(req.ResponseBody);
        }
Esempio n. 3
0
 public async Task UploadFileAsync(string fileId, Stream stream, Google.Apis.Drive.v3.Data.File file = null)
 {
     if (file == null)
     {
         file = new Google.Apis.Drive.v3.Data.File();
     }
     FilesResource.UpdateMediaUpload updateMediaUpload = service.Files.Update(file, fileId, stream, file.MimeType);
     await updateMediaUpload.UploadAsync();
 }
Esempio n. 4
0
        public async Task Upload(VersionedData data)
        {
            var storageToUpdate = new File {
                Name = (await _remoteStorageInfoRepository.GetRemoteStorageInfo()).Name
            };

            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data))))
            {
                FilesResource.UpdateMediaUpload updateRequest =
                    _service.Files.Update(storageToUpdate,
                                          (await _remoteStorageInfoRepository.GetRemoteStorageInfo()).Id, stream, DataFileContentType);
                await updateRequest.UploadAsync();
            }
        }
        /// <summary>
        /// Upload or update a file to Google Drive
        /// </summary>
        /// <param name="file">the path to the file</param>
        /// <param name="type">the type of the file</param>
        /// <returns></returns>
        public async Task <File> UploadFile(string file, ResourceType type)
        {
            await Initialize(); // Initialize Google Drive Service

            var fileMetaData = new File
            {
                Name        = Path.GetFileName(file),
                MimeType    = MimeTypeDictionary.GetMimeType(Path.GetExtension(file)),
                Description = @"Uploaded by the Vacancy Scraper application"
            };

            if (await DoesFileExistInDriveAndFindFilesIfNot(type)) // update the already existing file
            {
                using (var stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    FilesResource.UpdateMediaUpload request = null;
                    switch (type)
                    {
                    case ResourceType.Vacancies:
                        request = _service.Files.Update(fileMetaData, _settingsManager.Settings.GoogleDriveVacanciesFileId, stream, fileMetaData.MimeType);
                        break;

                    case ResourceType.Blacklist:
                        request = _service.Files.Update(fileMetaData, _settingsManager.Settings.GoogleDriveBlacklistFileId, stream, fileMetaData.MimeType);
                        break;

                    case ResourceType.Done:
                        request = _service.Files.Update(fileMetaData, _settingsManager.Settings.GoogleDriveDoneFileId, stream, fileMetaData.MimeType);
                        break;

                    case ResourceType.Companies:
                        request = _service.Files.Update(fileMetaData, _settingsManager.Settings.GoogleDriveCompaniesFileId, stream, fileMetaData.MimeType);
                        break;

                    default:
                        break;
                    }

                    if (request == null)
                    {
                        return(null);
                    }

                    request.Fields = "id";
                    await request.UploadAsync();

                    Console.WriteLine(@"Updated " + fileMetaData.Name);

                    return(request.ResponseBody);
                }
            }
            else // create new file
            {
                FilesResource.CreateMediaUpload request;
                using (var stream = new FileStream(file, FileMode.Open))
                {
                    request        = _service.Files.Create(fileMetaData, stream, fileMetaData.MimeType);
                    request.Fields = "id";
                    await request.UploadAsync();

                    Console.WriteLine(@"Uploaded " + fileMetaData.Name);
                }

                return(request.ResponseBody);
            }
        }
Esempio n. 6
0
            protected override void Start()
            {
                try
                {
                    if (Status != StatusType.Queued)
                    {
                        throw new Exception("Stream has not been queued.");
                    }

                    base.Start();

                    _FileInfo = _DriveService.GetFile(FileId);

                    if (_FileInfo == null)
                    {
                        throw new Exception("File '" + FileId + "' no longer exists.");
                    }

                    if (String.IsNullOrEmpty(_FileInfo.FilePath))
                    {
                        throw new Exception("FileInfo.FilePath is blank.");
                    }

                    if (!System.IO.File.Exists(_FileInfo.FilePath))
                    {
                        throw new Exception("FileInfo.FilePath '" + _FileInfo.FilePath + "' does not exist.");
                    }

                    Lock(_FileInfo.FilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite);

                    _FileSize      = _FileStream.Length;
                    _LastWriteTime = API.DriveService.GetFileLastWriteTime(_FileInfo.FilePath);

                    if (_FileInfo.IsGoogleDoc)
                    {
                        DriveService_ProgressChanged(UploadStatus.Completed, FileSize, null);
                    }
                    else
                    {
                        FileInfoStatus fileInfoStatus = API.DriveService.GetFileInfoStatus(_FileInfo);

                        if (fileInfoStatus != FileInfoStatus.ModifiedOnDisk)
                        {
                            if (CheckIfAlreadyUploaded)
                            {
                                try
                                {
                                    DriveService_ProgressChanged(UploadStatus.Completed, 0, null);

                                    return;
                                }
                                catch (Exception exception)
                                {
                                    Log.Error(exception);
                                }
                            }
                        }

                        using (API.DriveService.Connection connection = API.DriveService.Connection.Create())
                        {
                            Google.Apis.Drive.v2.Data.File file = _FileInfo._file;

                            file.ModifiedDate = _LastWriteTime.ToUniversalTime();

                            FilesResource.UpdateMediaUpload request = connection.Service.Files.Update(file,
                                                                                                      file.Id,
                                                                                                      _FileStream,
                                                                                                      file.MimeType);

                            request.ProgressChanged  += DriveService_ProgressChanged;
                            request.ResponseReceived += DriveService_ResponseReceived;

                            request.Fields = API.DriveService.RequestFields.FileFields;

                            if (ChunkSize <= 0)
                            {
                                request.ChunkSize = FilesResource.UpdateMediaUpload.DefaultChunkSize;
                            }
                            else if (ChunkSize < FilesResource.UpdateMediaUpload.MinimumChunkSize)
                            {
                                request.ChunkSize = FilesResource.UpdateMediaUpload.MinimumChunkSize;
                            }
                            else
                            {
                                request.ChunkSize = ChunkSize;
                            }

                            request.Convert                   = _Parameters.Convert;
                            request.NewRevision               = true;
                            request.Ocr                       = _Parameters.Ocr;
                            request.OcrLanguage               = _Parameters.OcrLanguage;
                            request.Pinned                    = _Parameters.Pinned;
                            request.SetModifiedDate           = true;
                            request.TimedTextLanguage         = _Parameters.TimedTextLanguage;
                            request.TimedTextTrackName        = _Parameters.TimedTextTrackName;
                            request.UpdateViewedDate          = _Parameters.UpdateViewedDate;
                            request.UseContentAsIndexableText = _Parameters.UseContentAsIndexableText;

                            _CancellationTokenSource = new System.Threading.CancellationTokenSource();

                            System.Threading.Tasks.Task <IUploadProgress> task = request.UploadAsync(_CancellationTokenSource.Token);
                        }
                    }
                }
                catch (Exception exception)
                {
                    try
                    {
                        _Status           = StatusType.Failed;
                        _ExceptionMessage = exception.Message;

                        DriveService_ProgressChanged(UploadStatus.Failed, 0, exception);
                    }
                    catch
                    {
                        Debugger.Break();
                    }

                    Log.Error(exception);
                }
            }