story writer backend migration complete, Blog writer SEO and story writer backend migration complete, Blog writer SEO and story writer frontend migration complete
This commit is contained in:
91
scripts/wix_reconsent_helper.py
Normal file
91
scripts/wix_reconsent_helper.py
Normal file
@@ -0,0 +1,91 @@
|
||||
"""Helper script to fetch the Wix OAuth re-consent URL for manual testing.
|
||||
|
||||
This script does NOT change any backend behaviour. It simply calls the
|
||||
unauthenticated `/api/wix/test/auth/url` endpoint (which already exists for
|
||||
testing) to retrieve the authorization URL that includes all required scopes
|
||||
and prints it to the console. Optionally it can open the URL in the default
|
||||
web browser to start the re-consent flow.
|
||||
|
||||
Usage:
|
||||
|
||||
python scripts/wix_reconsent_helper.py --base-url http://localhost:8000 --open
|
||||
|
||||
Options:
|
||||
--base-url Base URL where the ALwrity backend is running. Defaults to
|
||||
http://localhost:8000.
|
||||
--open If provided, the script will attempt to open the URL in the
|
||||
system default web browser after fetching it.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
import webbrowser
|
||||
from typing import Optional
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
TEST_AUTH_ENDPOINT = "/api/wix/test/auth/url"
|
||||
|
||||
|
||||
def fetch_authorization_url(base_url: str) -> str:
|
||||
"""Fetch the Wix authorization URL from the test endpoint."""
|
||||
|
||||
endpoint = base_url.rstrip("/") + TEST_AUTH_ENDPOINT
|
||||
try:
|
||||
response = requests.get(endpoint, timeout=10)
|
||||
response.raise_for_status()
|
||||
except requests.RequestException as exc: # pragma: no cover - simple helper
|
||||
raise SystemExit(f"Failed to fetch authorization URL: {exc}") from exc
|
||||
|
||||
payload = response.json() or {}
|
||||
url: Optional[str] = payload.get("url") or payload.get("authorization_url")
|
||||
if not url:
|
||||
raise SystemExit(
|
||||
"Test endpoint did not return an authorization URL. "
|
||||
"Ensure the backend is running and the endpoint is available."
|
||||
)
|
||||
|
||||
# Provide a small summary for the caller.
|
||||
scope = None
|
||||
if "scope=" in url:
|
||||
scope = url.split("scope=")[-1].split("&")[0]
|
||||
|
||||
print("✅ Wix authorization URL fetched successfully:\n")
|
||||
print(url)
|
||||
if scope:
|
||||
print("\nScopes requested:")
|
||||
for item in scope.split(","):
|
||||
print(f" - {item}")
|
||||
|
||||
return url
|
||||
|
||||
|
||||
def parse_args(argv: list[str]) -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(description="Fetch Wix OAuth re-consent URL")
|
||||
parser.add_argument(
|
||||
"--base-url",
|
||||
default="http://localhost:8000",
|
||||
help="Base URL for the ALwrity backend (default: http://localhost:8000)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--open",
|
||||
action="store_true",
|
||||
help="Open the fetched URL in the default web browser",
|
||||
)
|
||||
return parser.parse_args(argv)
|
||||
|
||||
|
||||
def main(argv: Optional[list[str]] = None) -> None:
|
||||
args = parse_args(argv or sys.argv[1:])
|
||||
url = fetch_authorization_url(args.base_url)
|
||||
|
||||
if args.open:
|
||||
print("\nOpening web browser for re-consent...")
|
||||
webbrowser.open(url)
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover - script entry point
|
||||
main()
|
||||
Reference in New Issue
Block a user