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()));
        }
Exemple #2
0
        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();
        }
Exemple #4
0
 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}");
        }