package googleDrive import ( "context" "go.uber.org/zap" "google.golang.org/api/drive/v3" "google.golang.org/api/option" "houston/internal/clients" "houston/logger" "net/http" "time" ) type DriveActions interface { SearchInDrive(timeout time.Duration, query string) (*drive.FileList, error) CreateDirectory(timeout time.Duration, directoryName string) (*drive.File, error) DeleteFile(timeout time.Duration, fileId string) error CopyFile(timeout time.Duration, fileId string, directoryId string) (*drive.File, error) ExportFile(timeout time.Duration, fileId string, mimeType string) (*http.Response, error) } func NewGoogleDriveActions() (*ActionsImpl, error) { driveService, err := drive.NewService(context.Background(), option.WithTokenSource(clients.GetGoogleTokenSource())) if err != nil { logger.Error("Unable to retrieve Drive client", zap.Error(err)) return nil, err } return &ActionsImpl{filesService: driveService.Files}, nil }