# Permanent File URL - Quick Start Guide

## 🚀 Bắt Đầu Nhanh

### 1. Upload File và Tạo Permanent URL

```bash
curl -X POST http://your-server.com/api/speakup/upload-file-with-token \
  -F "file=@image.jpg" \
  -F "create_permanent=true" \
  -F "expires_years=20" \
  -F "partner_id=acme-corp"
```

**Response:**
```json
{
  "status": true,
  "data": {
    "permanent_url": {
      "file_url": "http://your-server.com/api/permanent-file/{token}",
      "expires_at": "2044-11-18T12:00:00Z"
    }
  }
}
```

### 2. Sử Dụng URL Trong HTML

```html
<img src="http://your-server.com/api/permanent-file/{token}" alt="Image">
```

### 3. Cấu Hình Domain (`.env`)

```env
ALLOWED_DOMAINS=partner.com,subdomain.partner.com
```

---

## 📋 API Endpoints

| Method | Endpoint | Mô tả |
|--------|----------|-------|
| POST | `/api/speakup/upload-file-with-token` | Upload file + tạo permanent URL |
| POST | `/api/speakup/get-permanent-url` | Tạo permanent URL cho file đã upload |
| GET | `/api/permanent-file/{token}` | Serve file (kiểm tra domain) |
| POST | `/api/speakup/revoke-permanent-token` | Revoke token |

---

## 🔄 Luồng Hoạt Động

```
1. Upload file → S3-AWS
2. Tạo permanent URL (token cố định, 20 năm)
3. Trả về URL của server
4. Đối tác hardcode URL vào HTML
5. User load ảnh → Server kiểm tra domain → Lấy từ S3 → Trả về
```

---

## 💡 Ví Dụ Code

### JavaScript/React
```javascript
const imageUrl = "http://your-server.com/api/permanent-file/{token}";
<img src={imageUrl} alt="Product" />
```

### PHP
```php
$imageUrl = "http://your-server.com/api/permanent-file/{token}";
echo "<img src='{$imageUrl}' alt='Product' />";
```

### Python
```python
image_url = "http://your-server.com/api/permanent-file/{token}"
# Sử dụng trong template hoặc API response
```

---

## 🔒 Bảo Mật

- ✅ Token cố định (cùng file = cùng token)
- ✅ Kiểm tra domain mỗi lần load
- ✅ Token hết hạn sau N năm
- ✅ Có thể revoke token

---

## 📚 Tài Liệu Đầy Đủ

Xem file: [PERMANENT_FILE_URL_GUIDE.md](./PERMANENT_FILE_URL_GUIDE.md)

---

**Quick Start Version:** 1.0.0

