using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v3;
using Google.Apis.Services;

namespace DiunaBI.Infrastructure.Services;

public class GoogleDriveHelper
{
    public DriveService? Service { get; private set; }
    private const string ApplicationName = "Diuna";
    private static readonly string[] Scopes = [DriveService.Scope.Drive];
    public GoogleDriveHelper()
    {
        InitializeService();
    }
    private void InitializeService()
    {
        var credential = GetCredentialsFromFile();
        Service = new DriveService(new BaseClientService.Initializer
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName
        });
    }
    private static GoogleCredential GetCredentialsFromFile()
    {
        // ReSharper disable once RedundantAssignment
        var fileName = "client_secrets.json";
#if DEBUG
        fileName = "client_secrets.Development.json";
#endif
        using var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
        var credential = GoogleCredential.FromStream(stream).CreateScoped(Scopes);
        return credential;
    }
}