"""Google Search Console authentication using service account."""

import logging

from google.oauth2 import service_account
from googleapiclient.discovery import build

logger = logging.getLogger("seo_optimizer")

SCOPES = [
    "https://www.googleapis.com/auth/webmasters.readonly",
    "https://www.googleapis.com/auth/webmasters",
]


def get_credentials(service_account_key_path: str) -> service_account.Credentials:
    """Load service account credentials from JSON key file."""
    credentials = service_account.Credentials.from_service_account_file(
        service_account_key_path, scopes=SCOPES
    )
    logger.info("Service account credentials loaded: %s", credentials.service_account_email)
    return credentials


def build_webmasters_service(credentials: service_account.Credentials):
    """Build webmasters v3 service (searchAnalytics, sitemaps)."""
    service = build("webmasters", "v3", credentials=credentials, cache_discovery=False)
    logger.debug("Webmasters v3 service built")
    return service


def build_searchconsole_service(credentials: service_account.Credentials):
    """Build searchconsole v1 service (URL Inspection)."""
    service = build("searchconsole", "v1", credentials=credentials, cache_discovery=False)
    logger.debug("Search Console v1 service built")
    return service


def authenticate(service_account_key_path: str) -> tuple:
    """Authenticate and return (webmasters_service, searchconsole_service, credentials).

    Returns:
        Tuple of (webmasters_service, searchconsole_service, credentials)
    """
    credentials = get_credentials(service_account_key_path)
    webmasters = build_webmasters_service(credentials)
    searchconsole = build_searchconsole_service(credentials)
    logger.info("Authentication complete")
    return webmasters, searchconsole, credentials
