package service

import (
	"context"
	"os"

	"github.com/spf13/viper"
	admin "google.golang.org/api/admin/directory/v1"

	"github.com/pingcap-inc/it-automation/pkg/log"
	"github.com/pingcap-inc/it-automation/pkg/provider/google"
)

func NewGoogleService(ctx context.Context) (*admin.Service, error) {
	userEmail := "liuy@pingcap.com"
	serviceAccountFile := viper.GetString("google.service-account")
	scope := []string{
		admin.AdminDirectoryGroupMemberScope,
		admin.AdminDirectoryGroupScope,
		admin.AdminDirectoryUserScope,
	}
	serviceAccount, err := os.ReadFile(serviceAccountFile)
	if err != nil {
		log.Fatalf("Error loading golden file: %s", err)
	}
	service, err := google.NewAdminSrv(ctx, userEmail, serviceAccount, scope...)
	if err != nil {
		log.L(ctx).Errorf("Error when calling `google.NewGroupsSettingService`: %s", err.Error())

	}

	return service, nil
}
