diff --git a/AsbCloudDbDemoData/Program.cs b/AsbCloudDbDemoData/Program.cs index 60281018..7be5aa14 100644 --- a/AsbCloudDbDemoData/Program.cs +++ b/AsbCloudDbDemoData/Program.cs @@ -12,7 +12,7 @@ namespace AsbCloudDevOperations { var controllerTester = new ControllerLoadTester(); - controllerTester.TestControllerRoute(); + DbDemoDataFiller.AddDemoData(); //.GetAwaiter().GetResult(); Console.WriteLine("End of Test"); diff --git a/AsbCloudInfrastructure/Services/TelemetryTracker.cs b/AsbCloudInfrastructure/Services/TelemetryTracker.cs index f1395f6e..5c9a08b1 100644 --- a/AsbCloudInfrastructure/Services/TelemetryTracker.cs +++ b/AsbCloudInfrastructure/Services/TelemetryTracker.cs @@ -10,7 +10,7 @@ namespace AsbCloudInfrastructure.Services { public class TelemetryTracker : ITelemetryTracker { - private Dictionary requests; + private readonly Dictionary requests; public TelemetryTracker(CacheDb cacheDb) { diff --git a/ConsoleApp1/ConsoleApp1.csproj b/ConsoleApp1/ConsoleApp1.csproj index 29536cbc..8b40740e 100644 --- a/ConsoleApp1/ConsoleApp1.csproj +++ b/ConsoleApp1/ConsoleApp1.csproj @@ -8,6 +8,7 @@ + diff --git a/ConsoleApp1/DebugWellOperationsStatService.cs b/ConsoleApp1/DebugWellOperationsStatService.cs index 80d88522..1463dc8a 100644 --- a/ConsoleApp1/DebugWellOperationsStatService.cs +++ b/ConsoleApp1/DebugWellOperationsStatService.cs @@ -21,7 +21,7 @@ namespace ConsoleApp1 .Options; using var db = new AsbCloudDbContext(options); var cacheDb = new CacheDb(); - var telemetryService = new TelemetryService(db, new TelemetryTracker(), cacheDb); + var telemetryService = new TelemetryService(db, new TelemetryTracker(cacheDb), cacheDb); var wellService = new WellService(db, telemetryService, cacheDb); var wellOptsStat = new WellOperationsStatService(db, cacheDb, wellService); var tvd = wellOptsStat.GetTvdAsync(1, default).Result; diff --git a/ConsoleApp1/GoogleDriveFilesService.cs b/ConsoleApp1/GoogleDriveFilesService.cs new file mode 100644 index 00000000..25d222f9 --- /dev/null +++ b/ConsoleApp1/GoogleDriveFilesService.cs @@ -0,0 +1,130 @@ +using Google.Apis.Auth.OAuth2; +using Google.Apis.Auth.OAuth2.Flows; +using Google.Apis.Auth.OAuth2.Responses; +using Google.Apis.Drive.v3; +using Google.Apis.Services; +using Google.Apis.Util.Store; +using Google.Apis.Drive.v3.Data; +using System.IO; +using System.Collections.Generic; + +// usage example at the very bottom +namespace ConsoleApp1 +{ + public class GoogleDriveFilesService + { + private static DriveService GetService() + { // ключи для почты asbautodrilling@gmail.com. + var tokenResponse = new TokenResponse + { + AccessToken = "ya29.a0ARrdaM-lM7q0TIC_DXixR4oW63QUftjSPHl-8nIdvZwtqA8Z1bXtlYpDrQXj9UFTjW8FW8uqPMrdamUSp4kO4a9JX7FddkBWxaJ_omSJpqzDfnHTHA_7-zGMUohaAsmPLsQtFz_GUmB5ZoVLmA8xWdbJxVxU", + RefreshToken = "1//04FeDguc19IfgCgYIARAAGAQSNwF-L9Ir8U7wX2seanUzsxXXGgFzOYQqjbtN9O27ZZybbOobZjVAo_4_eFNLMX1ElPKOFVWsrJQ" + }; + + var applicationName = "Files"; // Use the name of the project in Google Cloud + var username = "asbautodrilling@gmail.com"; // Use your email + + var apiCodeFlow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer + { + ClientSecrets = new ClientSecrets + { + ClientId = "1020584579240-f7amqg35qg7j94ta1ntgitajq27cgh49.apps.googleusercontent.com", + ClientSecret = "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" + }, + Scopes = new[] {DriveService.Scope.Drive}, + DataStore = new FileDataStore(applicationName) + }); + + var credential = new UserCredential(apiCodeFlow, username, tokenResponse); + + var service = new DriveService(new BaseClientService.Initializer + { + HttpClientInitializer = credential, + ApplicationName = applicationName + }); + return service; + } + + //public string CreateFolder(string parent, string folderName) + public string CreateFolder(string folderName) // Это fileName. У гугла почему-то все называется folder: и папка, и файл. + { // С parent почему-то не дружит, выкидывает Exception. + var service = GetService(); + var driveFolder = new Google.Apis.Drive.v3.Data.File(); + driveFolder.Name = folderName; + driveFolder.MimeType = "application/vnd.google-apps.folder"; + //driveFolder.Parents = new string[] { parent }; + var command = service.Files.Create(driveFolder); + var file = command.Execute(); + return file.Id; + } + + //public string UploadFile(Stream file, string fileName, string fileMime, string folder, string fileDescription) + public string UploadFile(Stream file, string fileName, string fileMime, string fileDescription) + { + DriveService service = GetService(); + + var driveFile = new Google.Apis.Drive.v3.Data.File(); + driveFile.Name = fileName; + driveFile.Description = fileDescription; + driveFile.MimeType = fileMime; + //driveFile.Parents = new [] {folder}; + + var request = service.Files.Create(driveFile, file, fileMime); + request.Fields = "id"; + + var response = request.Upload(); + if (response.Status != Google.Apis.Upload.UploadStatus.Completed) + throw response.Exception; + + return request.ResponseBody.Id; + } + + //public IEnumerable GetFiles(string folder) + public IEnumerable GetFiles() + { + var service = GetService(); + + var fileList = service.Files.List(); + // Это выражение ниже тоже чот не работает, выкидывает Exception. Без них выгружаются все файлы и + // папки водин список. + //fileList.Q =$"mimeType!='application/vnd.google-apps.folder' and '{folder}' in parents"; + //fileList.Fields = "nextPageToken, files(id, name, size, mimeType)"; + + var result = new List(); + string pageToken = null; + do + { + fileList.PageToken = pageToken; + var filesResult = fileList.Execute(); + var files = filesResult.Files; + pageToken = filesResult.NextPageToken; + result.AddRange(files); + } while (pageToken != null); + + return result; + } + + public void DeleteFile(string fileId) + { + var service = GetService(); + var command = service.Files.Delete(fileId); + var result = command.Execute(); + } + } +} + +// usage example: + +// var service = new GoogleDriveFilesService(); +// +// var files = service.GetFiles(); +// Console.WriteLine(files); +// +// var newFolderId = service.CreateFolder("testText.txt"); +// Console.WriteLine(newFolderId); +// +// var path = "/home/vladimir/TestUploadFile.txt"; +// var fileInfo = new FileInfo(path); +// var fileStream = File.Open(path, FileMode.Open); +// var uploadedFileId = service.UploadFile(fileStream, fileInfo.Name, "", "uploaded"); +// Console.WriteLine(uploadedFileId); \ No newline at end of file diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index 504c644d..f2d690ff 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -1,4 +1,7 @@ -namespace ConsoleApp1 +using System; +using System.IO; + +namespace ConsoleApp1 { //var options = new DbContextOptionsBuilder() // .UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True") @@ -9,7 +12,19 @@ { static void Main(/*string[] args*/) { - DebugWellOperationImportService.Main(); + var service = new GoogleDriveFilesService(); + + var files = service.GetFiles(); + Console.WriteLine(files); + + var newFolderId = service.CreateFolder("testText.txt"); + Console.WriteLine(newFolderId); + + var path = "/home/vladimir/TestUploadFile.txt"; + var fileInfo = new FileInfo(path); + var fileStream = File.Open(path, FileMode.Open); + var uploadedFileId = service.UploadFile(fileStream, fileInfo.Name, "", "uploaded"); + Console.WriteLine(uploadedFileId); } } }