using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Sheets.v4;

namespace DiunaBI.Infrastructure.Services;

public class GoogleSheetsHelper
{
    public SheetsService? Service { get; private set; }
    private const string ApplicationName = "Diuna";
    private static readonly string[] Scopes = [SheetsService.Scope.Spreadsheets];
    public GoogleSheetsHelper()
    {
        InitializeService();
    }
    private void InitializeService()
    {
        var credential = GetCredentialsFromFile();
        Service = new SheetsService(new BaseClientService.Initializer
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName
        });
    }
    private static GoogleCredential GetCredentialsFromFile()
    {
        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;
    }
}