gendesign/tradein-mvp/scripts/upload-cian-cookies.sh
lekss361 34e8c72e6c feat(tradein): cian_session cookies management + admin endpoints (Wave 4 Worker A)
- New: app/services/cian_session.py — load/save/verify encrypted Cian cookies
  (pgp_sym_encrypt via COOKIE_ENCRYPTION_KEY, psycopg v3, httpx)
- Modified: app/api/v1/admin.py — POST /scrape/cian/upload-cookies +
  GET /scrape/cian/test-auth (behind existing require_admin X-Admin-Token)
- Modified: app/core/config.py — add cookie_encryption_key setting (env COOKIE_ENCRYPTION_KEY)
- New: tests/test_cian_session.py — 16 unit tests (16/16 passed)
- New: scripts/upload-cian-cookies.sh — CLI helper for cookie upload flow
2026-05-23 16:13:10 +03:00

50 lines
1.6 KiB
Bash

#!/bin/bash
# Upload Cian session cookies to backend for Valuation Calculator auth.
#
# Usage: ./scripts/upload-cian-cookies.sh [cookies.json]
#
# cookies.json — JSON object { cookie_name: cookie_value, ... }
# Экспортируется из Chrome DevTools → Application → Cookies → www.cian.ru
# или через расширение Cookie-Editor → Export → JSON (object format).
#
# Переменные окружения:
# TRADEIN_ADMIN_TOKEN — admin token (или берётся из .env.runtime)
# TRADEIN_BASE_URL — base URL (default: https://gendsgn.ru/trade-in)
set -euo pipefail
COOKIES_FILE="${1:-cookies.json}"
if [[ ! -f "$COOKIES_FILE" ]]; then
echo "Error: cookies file not found: $COOKIES_FILE" >&2
echo "Usage: $0 cookies.json" >&2
exit 1
fi
# Загружаем токен из env или .env.runtime
ADMIN_TOKEN="${TRADEIN_ADMIN_TOKEN:-}"
if [[ -z "$ADMIN_TOKEN" ]] && [[ -f ".env.runtime" ]]; then
ADMIN_TOKEN="$(grep '^TRADEIN_ADMIN_TOKEN=' .env.runtime 2>/dev/null | cut -d= -f2- || true)"
fi
if [[ -z "$ADMIN_TOKEN" ]]; then
echo "Error: TRADEIN_ADMIN_TOKEN not set (env or .env.runtime)" >&2
exit 1
fi
BASE_URL="${TRADEIN_BASE_URL:-https://gendsgn.ru/trade-in}"
echo "Uploading Cian cookies from $COOKIES_FILE to $BASE_URL ..."
echo
curl -fsSL -X POST "$BASE_URL/api/v1/admin/scrape/cian/upload-cookies" \
-H "X-Admin-Token: $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d "@$COOKIES_FILE" \
| python3 -m json.tool
echo
echo "Verifying session:"
curl -fsSL "$BASE_URL/api/v1/admin/scrape/cian/test-auth" \
-H "X-Admin-Token: $ADMIN_TOKEN" \
| python3 -m json.tool