#!/bin/bash

set -e

if [ $# -lt 1 ]; then
  echo "❌ 用法: $0 <本地文件路径>"
  exit 1
fi

file="$1"
bucket="plugai"
host="https://s3.szaiai.com"
endpoint="https://api.szaiai.com"
access_key="admin"
secret_key="Admin@123.."
alias="autoalias"

if [ ! -f "$file" ]; then
  echo "❌ 文件不存在: $file"
  exit 1
fi

mc alias rm $alias 2>/dev/null || true
mc alias set $alias $endpoint $access_key $secret_key > /dev/null
mc mb --ignore-existing "$alias/$bucket" > /dev/null

filename=$(basename "$file")

echo "🚀 开始上传文件: $file"
mc cp "$file" "$alias/$bucket/$filename"

echo "✅ 上传完成，开始验证..."

# 计算上传前本地文件前 1MB 的 SHA256
local_hash=$(head -c 1048576 "$file" | sha256sum | awk '{print $1}')

# 下载远程同名文件的前 1MB 来比较（使用 Range）
remote_hash=$(curl -s -H "Range: bytes=0-1048575" "$host/$bucket/$filename" | sha256sum | awk '{print $1}')

if [ "$local_hash" != "$remote_hash" ]; then
  echo "❌ 验证失败：远程文件仍然是旧的，未被覆盖！"
  echo "本地:  $local_hash"
  echo "远程:  $remote_hash"
  exit 1
fi

encoded=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "$filename")
echo "🎉 文件上传并验证成功：$host/$bucket/$encoded?ts=$(date +%s)"
