protected void UploadStream_ProgressChanged(DriveService.UploadStream stream, Item item) { try { item.Status = stream.Status; item.PercentCompleted = stream.PercentCompleted; Log.Information("Uploading file " + stream.FileId + " - " + stream.PercentCompleted + "% completed"); } catch (Exception exception) { Log.Error(exception, false); } }
protected void UploadStream_ProgressStarted(DriveService.UploadStream stream, Item item) { try { _ProcessCount++; item.Status = stream.Status; item.PercentCompleted = stream.PercentCompleted; Log.Information("Started uploading file " + stream.FileId); } catch (Exception exception) { Log.Error(exception, false); } }
protected void UploadStream_ProgressFinished(DriveService.UploadStream stream, Item item) { try { Mutex.Wait(); try { _ProcessCount--; item.Status = stream.Status; item.PercentCompleted = stream.PercentCompleted; if (stream.Completed) { DriveService.UploadStream uploadStream = stream; item.ModifiedDate = uploadStream.ModifiedDate; item.LastWriteTime = uploadStream.LastWriteTime; Log.Information("Completed uploading file " + stream.FileId); } else if (stream.Cancelled) { Log.Warning("Cancelled uploading file " + stream.FileId); } else if (stream.Failed) { Log.Error("Failed uploading file " + stream.FileId + " - " + stream.ExceptionMessage); } Items.Remove(item); } finally { Mutex.Release(); } } catch (Exception exception) { Log.Error(exception, false); } }
private void ProcessFolder(DriveService driveService, string folderPath) { try { Log.Information("CleanupFileWatcher attempting to process folder " + folderPath); string fileId = System.IO.Path.GetFileName(folderPath); FileInfo fileInfo = null; try { fileInfo = driveService.GetFile(fileId); } catch (Exception exception) { Log.Error(exception, false, false); } if (fileInfo != null) { DriveService.Stream stream = null; if (IsStreamLocked(fileInfo.Id, fileInfo.FilePath, ref stream)) { Log.Warning("Stream " + fileId + " is locked (type=" + stream.Type + ")"); } else if (IsFileLocked(fileInfo.Id, fileInfo.FilePath)) { Log.Warning("File " + fileId + " is locked"); } else if (!CanOpenFile(fileInfo.FilePath, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite, 1)) { Log.Warning("File " + fileInfo.FilePath + " is being used by another application."); } else if (!HasFileOnDiskTimedout(fileInfo.FilePath)) { Log.Warning("File " + fileId + " has not timed out on disk"); } else { FileInfoStatus fileInfoStatus = GetFileInfoStatus(fileInfo); if (fileInfoStatus == FileInfoStatus.ModifiedOnDisk) { Log.Information("Attempting to upload file " + fileId); var uploadStream = new DriveService.UploadStream(); uploadStream.OnProgressStarted += uploadStream_ProgressStarted; uploadStream.OnProgressChanged += uploadStream_ProgressChanged; uploadStream.OnProgressFinished += uploadStream_ProgressFinished; uploadStream.Init(fileInfo, null); driveService.UploadFile(uploadStream); } else { Log.Information("Attempting to clean-up file " + fileId); driveService.CleanupFile(fileInfo, fileInfoStatus, false); } } } else { Log.Information("Attempting to clean-up directory " + folderPath + ": File was not found in google drive"); System.IO.Directory.Delete(folderPath, true); } } catch (Exception exception) { Log.Error(exception, false); } }