#!/bin/bash

# --- Configuration ---
SERVICE_ACCOUNT_KEY_FILE="/home/openclaw/.openclaw/workspace/google_service_account.json"
DOCUMENT_ID="1Ymh60_Qe2yX6TgfznwOHwlphv8YMoz3SscJNg_HZtO0"
SCOPE="https://www.googleapis.com/auth/documents"

# --- JWT Header (Base64 URL-encoded) ---
HEADER=$(echo -n '{"alg":"RS256","typ":"JWT"}' | base64 | tr -d '\n=' | tr '/+' '_-')

# --- JWT Claim Set (Payload) ---
IAT=$(date +%s)
EXP=$((IAT + 3600))
CLIENT_EMAIL=$(jq -r .client_email "$SERVICE_ACCOUNT_KEY_FILE")

CLAIM_SET=$(cat <<EOF | jq -c .
{
  "iss": "$CLIENT_EMAIL",
  "scope": "$SCOPE",
  "aud": "https://www.googleapis.com/oauth2/v4/token",
  "iat": $IAT,
  "exp": $EXP
}
EOF
)
CLAIM_SET_ENCODED=$(echo -n "$CLAIM_SET" | base64 | tr -d '\n=' | tr '/+' '_-')

# --- Signature ---
SIGNED_CONTENT="$HEADER.$CLAIM_SET_ENCODED"
PRIVATE_KEY=$(jq -r .private_key "$SERVICE_ACCOUNT_KEY_FILE")

echo "$PRIVATE_KEY" > /tmp/private_key.pem
SIGNATURE=$(echo -n "$SIGNED_CONTENT" | openssl dgst -sha256 -sign /tmp/private_key.pem | base64 | tr -d '\n=' | tr '/+' '_-')
rm /tmp/private_key.pem

# --- Full JWT ---
JWT="$SIGNED_CONTENT.$SIGNATURE"

# --- Exchange JWT for Access Token ---
TOKEN_RESPONSE=$(curl -s -X POST "https://www.googleapis.com/oauth2/v4/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer" \
  --data-urlencode "assertion=$JWT")

ACCESS_TOKEN=$(echo "$TOKEN_RESPONSE" | jq -r .access_token)

if [ "$ACCESS_TOKEN" == "null" ] || [ -z "$ACCESS_TOKEN" ]; then
  echo "Error: Failed to obtain access token."
  echo "$TOKEN_RESPONSE"
  exit 1
fi

# --- Google Docs API Batch Update Request ---
BATCH_UPDATE_BODY=$(cat <<EOF
{
  "requests": [
    {
      "insertText": {
        "location": {
          "index": 1
        },
        "text": "Trợ lý Zen vừa sửa bài\n"
      }
    }
  ]
}
EOF
)

DOCS_API_ENDPOINT="https://docs.googleapis.com/v1/documents/$DOCUMENT_ID:batchUpdate"

curl -s -X POST "$DOCS_API_ENDPOINT" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$BATCH_UPDATE_BODY" | jq .
