public async Task <ActionResult> Disconnect(CancellationToken taskCancellationToken) { try { if (DateTime.UtcNow.Subtract(CurrentUser.GoogleDriveAccount.ConnectingDate).TotalSeconds + 300 > CurrentUser.GoogleDriveAccount.ExpiresInSeconds) { CurrentUser.GoogleDriveAccount = GoogleDriveApi.RefreshUser(CurrentUser.StringId, CurrentUser.GoogleDriveAccount); UnitOfWork.Commit(); } var token = CurrentUser.GoogleDriveAccount; var credential = new UserCredential(AppFlow.Flow, CurrentUser.StringId, new TokenResponse { AccessToken = token.AccessToken, ExpiresInSeconds = token.ExpiresInSeconds, Issued = token.Issued, RefreshToken = token.RefreshToken, Scope = token.Scope, TokenType = token.TokenType }); await credential.RevokeTokenAsync(taskCancellationToken); } catch { } UnitOfWork.GoogleDriveRepository.Delete(CurrentUser.Id); UnitOfWork.Commit(); return(RedirectToAction <UserController>(c => c.Index())); }
private bool GoogleDrive(User user, byte[] data) { try { OnAccountStart(new BackupEventArgs(AccountEnum.GoogleDrive.ToString())); if (DateTime.UtcNow.Subtract(user.GoogleDriveAccount.ConnectingDate).TotalSeconds + 300 > user.GoogleDriveAccount.ExpiresInSeconds) { user.GoogleDriveAccount = GoogleDriveApi.RefreshUser(user.StringId, user.GoogleDriveAccount); _unitOfWork.Commit(); } DriveService service = CreateDriveService(user); string folderId = GetDriveFolderId(service); UploadDriveFile(service, data, folderId); OnAccountComplete(new BackupEventArgs(AccountEnum.GoogleDrive.ToString())); return(true); } catch (Exception ex) { OnShowError(new BackupEventArgs(AccountEnum.GoogleDrive.ToString())); logger.Error("Problems with Google Drive", ex); _unitOfWork.GoogleDriveRepository.Delete(user.Id); _unitOfWork.Commit(); return(false); } }
private static async Task Main(string[] args) { const string serviceAcctEmail = "*****@*****.**"; const string configFile = "tempo-265222-88dada7b17c3.json"; const string appName = "TempoApi"; const string spreadsheetTitle = "Important exported info"; const string sheetTitle = "You precious data"; var credential = GoogleCredentialManager.CreateGoogleCredential(serviceAcctEmail, configFile); var sheetsApi = new GoogleSheetsApi(appName, credential); var createResponse = await sheetsApi.CreateAsync(spreadsheetTitle, sheetTitle); Console.WriteLine("Create sheet response"); Console.WriteLine(JsonConvert.SerializeObject(createResponse)); var headers = GetHeaders(); var data = GetData(); var batchUpdateValuesResponse = await sheetsApi.BatchUpdateAsync(createResponse.SpreadsheetId, sheetTitle, headers, data); Console.WriteLine("Batch update sheet response"); Console.WriteLine(JsonConvert.SerializeObject(batchUpdateValuesResponse)); var driveApi = new GoogleDriveApi(appName, credential); var fileList = await driveApi.ListFilesAsync(); Console.WriteLine("File list:"); Console.WriteLine(JsonConvert.SerializeObject(fileList)); var permission = await driveApi.ShareAsync(createResponse.SpreadsheetId, "*****@*****.**"); // permission = await driveApi.ShareAsync(createResponse.SpreadsheetId, "*****@*****.**"); // permission = await driveApi.ShareAsync(createResponse.SpreadsheetId, "*****@*****.**"); // await DeleteAllExceptAsync(fileList, createResponse.SpreadsheetId, driveApi); Console.ReadKey(); }
public ValuesController(GoogleDriveApi gdAPI) { _googleDriveApi = gdAPI; }
private static async Task DeleteAllExceptAsync(IList <File> fileList, string fileId, GoogleDriveApi driveApi) { foreach (var file in fileList) { if (file.Id == fileId) { continue; } var resp = await driveApi.DeleteAsync(file.Id); Console.WriteLine($"Delete file response (file id/name {file.Id} {file.Name}): {resp}"); } string emptyTrashResponse = await driveApi.EmptyTrashAsync(); Console.WriteLine($"Empty trash response: {emptyTrashResponse}"); }