Skip to content

Commit

Permalink
Work for searching and displaying list of google drive spreadsheets.
Browse files Browse the repository at this point in the history
  • Loading branch information
khanjal committed Nov 11, 2024
1 parent 974fbe4 commit 53f8b87
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 1 deletion.
1 change: 1 addition & 0 deletions RLE.Core/RLE.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Google.Apis.Drive.v3" Version="1.68.0.3574" />
<PackageReference Include="Google.Apis.Sheets.v4" Version="1.68.0.3547" />
<None Include="..\README.md" Pack="true" PackagePath="\" />
</ItemGroup>
Expand Down
32 changes: 32 additions & 0 deletions RLE.Core/Services/GoogleDriveService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using RLE.Core.Wrappers;

namespace RLE.Core.Services;

public interface IGoogleDriveService
{
public Task<IList<string>> GetSheetFiles();
}

public class GoogleDriveService : IGoogleDriveService
{
private DriveServiceWrapper _driveService;

public GoogleDriveService(string accessToken)
{
_driveService = new DriveServiceWrapper(accessToken);
}

public GoogleDriveService(Dictionary<string, string> parameters)
{
_driveService = new DriveServiceWrapper(parameters);
}

public async Task<IList<string>> GetSheetFiles()
{
var sheets = await _driveService.GetSheetFiles();

var sheetList = sheets.Select(s => s.Name.ToString()).ToList();

return sheetList;
}
}
72 changes: 72 additions & 0 deletions RLE.Core/Wrappers/DriveServiceWrapper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v3;
using RLE.Core.Constants;
using File = Google.Apis.Drive.v3.Data.File;

namespace RLE.Core.Wrappers;

public interface IDriveServiceWrapper
{
Task<IList<File>> GetSheetFiles();
Task<IList<File>> SearchSheetFiles(string name);
}
public class DriveServiceWrapper : DriveService, IDriveServiceWrapper
{
private DriveService _driveService = new();

public DriveServiceWrapper(string accessToken)
{
var credential = GoogleCredential.FromAccessToken(accessToken.Trim());

InitializeService(credential);
}

public DriveServiceWrapper(Dictionary<string, string> parameters)
{
var jsonCredential = new JsonCredentialParameters
{
Type = parameters["type"].Trim(),
PrivateKeyId = parameters["privateKeyId"].Trim(),
PrivateKey = parameters["privateKey"].Trim(),
ClientEmail = parameters["clientEmail"].Trim(),
ClientId = parameters["clientId"].Trim(),
};

var credential = GoogleCredential.FromJsonParameters(jsonCredential);

InitializeService(credential);
}

private DriveService InitializeService(GoogleCredential credential)
{
_driveService = new DriveService(new Initializer()
{
HttpClientInitializer = credential,
ApplicationName = GoogleConfig.AppName
});

return _driveService;
}

public async Task<IList<File>> GetSheetFiles()
{
// Define parameters of request.
FilesResource.ListRequest listRequest = _driveService.Files.List();
//listRequest.PageSize = 10;
listRequest.Q = "mimeType='application/vnd.google-apps.spreadsheet'";

// List files.
return (await listRequest.ExecuteAsync()).Files;
}

public async Task<IList<File>> SearchSheetFiles(string name)
{
// Define parameters of request.
FilesResource.ListRequest listRequest = _driveService.Files.List();
//listRequest.PageSize = 10;
listRequest.Q = $"mimeType='application/vnd.google-apps.spreadsheet' and name contains '{name}'";

// List files.
return (await listRequest.ExecuteAsync()).Files;
}
}
2 changes: 1 addition & 1 deletion RLE.Core/Wrappers/SheetServiceWrapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public SheetServiceWrapper(Dictionary<string, string> parameters, string spreads

private SheetsService InitializeService(GoogleCredential credential)
{
_sheetsService = new SheetsService(new BaseClientService.Initializer()
_sheetsService = new SheetsService(new Initializer()
{
HttpClientInitializer = credential,
ApplicationName = GoogleConfig.AppName
Expand Down

0 comments on commit 53f8b87

Please sign in to comment.