#!/bin/bash
# =============================================================
#  Quink Upload & Email Notify サンプルスクリプト (Mac/Linux)
#
#  ファイルをアップロードして、発行された URL をメールで送信します。
#
#  使い方:
#    chmod +x upload_and_notify.sh   # 初回のみ
#    ./upload_and_notify.sh recipient@example.com report.zip
#    ./upload_and_notify.sh recipient@example.com a.zip b.pdf
#
#  前提:
#    curl / python3 が使えること（Mac 標準搭載）
# =============================================================

# ── Quink 設定 ────────────────────────────────────────────────
API_KEY="your-api-key-here"   # マイファイルページで取得した API キー
UPLOAD_URL="https://quink.jp/upload"

# ── SMTP 設定（ここを編集してください） ──────────────────────
SMTP_HOST="smtp.example.com"
SMTP_PORT=465          # 465(SSL) または 587(STARTTLS)
SMTP_USER="sender@example.com"
SMTP_PASS="your-smtp-password"
MAIL_FROM="sender@example.com"
# ─────────────────────────────────────────────────────────────

# 引数チェック
if [ $# -lt 2 ]; then
  echo "Usage: $0 recipient@example.com file1 [file2 ...]" >&2
  exit 1
fi

MAIL_TO="$1"
shift

# ── アップロード ──────────────────────────────────────────────
URLS=()
for FILE in "$@"; do
  if [ ! -f "$FILE" ]; then
    echo "[WARN] ファイルが見つかりません（スキップ）: $FILE" >&2
    continue
  fi

  echo "Uploading: $(basename "$FILE")" >&2
  RESPONSE=$(curl -s -X POST "$UPLOAD_URL" \
    -H "X-API-Key: $API_KEY" \
    -F "file=@$FILE")

  URL=$(echo "$RESPONSE" | python3 -c \
    "import sys,json; d=json.load(sys.stdin); print(d['url'])" 2>/dev/null)

  if [ -n "$URL" ]; then
    echo "  -> $URL" >&2
    URLS+=("$URL")
  else
    ERR=$(echo "$RESPONSE" | python3 -c \
      "import sys,json; d=json.load(sys.stdin); print(d.get('detail','Unknown error'))" 2>/dev/null \
      || echo "$RESPONSE")
    echo "[ERROR] $(basename "$FILE"): $ERR" >&2
  fi
done

if [ ${#URLS[@]} -eq 0 ]; then
  echo "[ERROR] アップロードに成功したファイルがないため、メールは送信しません。" >&2
  exit 1
fi

# ── メール本文を組み立て ──────────────────────────────────────
URL_BLOCK=""
for U in "${URLS[@]}"; do
  URL_BLOCK="${URL_BLOCK}  ${U}\n"
done

SUBJECT="ファイルを共有しました"
BODY="ファイルをアップロードしました。\nダウンロードリンクよりお受け取りください。\n\n${URL_BLOCK}\n※ リンクには有効期限があります。お早めにダウンロードをお願いします。"

# ── Python で SMTP 送信（ポート465/587 両対応） ───────────────
echo "Sending email to: $MAIL_TO" >&2

python3 - <<EOF
import smtplib
from email.mime.text import MIMEText
import sys

host   = "$SMTP_HOST"
port   = $SMTP_PORT
user   = "$SMTP_USER"
passwd = "$SMTP_PASS"
from_  = "$MAIL_FROM"
to     = "$MAIL_TO"
subject = "$SUBJECT"
body   = """$BODY"""

msg = MIMEText(body, "plain", "utf-8")
msg["Subject"] = subject
msg["From"]    = from_
msg["To"]      = to

try:
    if port == 465:
        with smtplib.SMTP_SSL(host, port, timeout=10) as s:
            s.login(user, passwd)
            s.sendmail(from_, [to], msg.as_string())
    else:
        with smtplib.SMTP(host, port, timeout=10) as s:
            s.starttls()
            s.login(user, passwd)
            s.sendmail(from_, [to], msg.as_string())
    print("メールを送信しました")
except Exception as e:
    print(f"[ERROR] メール送信失敗: {e}", file=sys.stderr)
    sys.exit(1)
EOF
