//поиск папки для backup private async Task <DriveId> FindItems(string folderName) { DriveId folderId = null; try { //установим запрос поиска IDriveFolder appFolder = DriveClass.DriveApi.GetRootFolder(_googleApiClient); var query = new QueryClass .Builder().AddFilter(Filters.And( Filters.Eq(SearchableField.Title, folderName), Filters.Eq(SearchableField.Trashed, false))).Build(); var queryResult = await appFolder.QueryChildrenAsync(_googleApiClient, query); foreach (var driveItem in queryResult.MetadataBuffer) { if (driveItem.IsFolder && driveItem.Title == folderName) { folderId = driveItem.DriveId; } } return(folderId); } catch (Exception er) { Log.Logger.Error(er.Message, er.StackTrace); return(folderId); } }
//метод записи файла private void WriteFile(DriveId folderBackUpId, string filename, IDriveApiDriveContentsResult content) { try { byte[] bytes = System.IO.File.ReadAllBytes(pathToDb); string file = Convert.ToBase64String(bytes); using (var writer = new OutputStreamWriter(content.DriveContents.OutputStream)) { writer.Write(file); writer.Close(); } MetadataChangeSet changeSet = new MetadataChangeSet.Builder() .SetTitle(filename) .SetMimeType("application/octet-stream") .Build(); IDriveFolder driveFolder = null; //получаем папку по ID driveFolder = driveFolder ?? folderBackUpId.AsDriveFolder(); //если папка не ноль то создаем файл if (driveFolder != null) { var s = driveFolder.CreateFile(_googleApiClient, changeSet, content.DriveContents); CreateAlertDialog("", successMessage); } } catch (Exception er) { CreateAlertDialog("", errorMessage + er.Message); } }
public static async Task <IDriveApiMetadataBufferResult> QueryChildrenAsync(this IDriveFolder api, GoogleApiClient apiClient, Query.QueryClass query) { return((await api.QueryChildren(apiClient, query)).JavaCast <IDriveApiMetadataBufferResult> ()); }
//получаем файл backup private async Task GetBackUpFile(IDriveApiDriveContentsResult contentResults) { try { var contentFile = new StringBuilder(); //получаем папку backup DriveId folderBackUpId = FindItems(folderName).Result; if (folderBackUpId == null) { CreateAlertDialog("", errorMessage); //папка с backup не обнаружена } else { IDriveFolder driveFolder = null; IDriveFile driveFile = null; //получаем папку по ID driveFolder = driveFolder ?? folderBackUpId.AsDriveFolder(); //если папка не ноль то получаем файлы if (driveFolder != null) { var filesResult = await driveFolder.ListChildrenAsync(_googleApiClient); Java.Util.Date temp = null; foreach (var item in filesResult.MetadataBuffer) { if (item.Title.Contains(filename)) { if (temp == null || !temp.After(item.ModifiedDate)) { temp = item.ModifiedDate; driveFile = item.DriveId.AsDriveFile(); } } } //чтение файла из Google drive и получение строки в BAse64 var readFile = await driveFile.OpenAsync(_googleApiClient, DriveFile.ModeReadOnly, null); using (var inpstr = readFile.DriveContents.InputStream) using (var streamReade = new StreamReader(inpstr)) { while (streamReade.Peek() >= 0) { contentFile.Append(await streamReade.ReadLineAsync()); } } //конвертируем строку из base64 и записываем в файл БД(переписываем) byte[] bytes = Convert.FromBase64String(contentFile.ToString()); System.IO.File.WriteAllBytes(pathToDb, bytes); CreateAlertDialog("", successMessage); } } } catch (Exception er) { Log.Logger.Error(er.Message, er.StackTrace); CreateAlertDialog("", errorMessage); } }
public static async Task <IDriveFolderDriveFolderResult> CreateFolderAsync(this IDriveFolder api, GoogleApiClient apiClient, MetadataChangeSet changeSet) { return((await api.CreateFolder(apiClient, changeSet)).JavaCast <IDriveFolderDriveFolderResult> ()); }
public static async Task <IDriveApiMetadataBufferResult> ListChildrenAsync(this IDriveFolder api, GoogleApiClient apiClient) { return((await api.ListChildren(apiClient)).JavaCast <IDriveApiMetadataBufferResult> ()); }
public static async Task <IDriveFolderDriveFileResult> CreateFileAsync(this IDriveFolder api, GoogleApiClient apiClient, MetadataChangeSet changeSet, IDriveContents driveContents, ExecutionOptions executionOptions) { return((await api.CreateFile(apiClient, changeSet, driveContents, executionOptions)).JavaCast <IDriveFolderDriveFileResult> ()); }
public Task <IDriveFolder> CreateFolderAsync(IDriveFolder driveFolder, MetadataChangeSet metadataChangeSet) { return(CreateFolder(driveFolder, metadataChangeSet).AsAsync <IDriveFolder> ()); }
public Task <IDriveFile> CreateFileAsync(IDriveFolder driveFolder, MetadataChangeSet metadataChangeSet, IDriveContents driveContents, ExecutionOptions executionOptions) { return(CreateFile(driveFolder, metadataChangeSet, driveContents, executionOptions).AsAsync <IDriveFile> ()); }
public Task <MetadataBuffer> QueryChildrenAsync(IDriveFolder folder, Query.QueryClass query) { return(QueryChildren(folder, query).AsAsync <MetadataBuffer> ()); }
public Task <MetadataBuffer> ListChildrenAsync(IDriveFolder driveFolder) { return(ListChildren(driveFolder).AsAsync <MetadataBuffer> ()); }