#!/usr/bin/env python3

import argparse
import json
import os


DEFAULT_AUTH_TOKEN_PATH = os.path.expanduser("~/.dbx/token")
LEGACY_AUTH_TOKEN_PATH = os.path.expanduser("~/.doubao/token")


def trim_trailing_slash(value):
    return value.rstrip("/")


def read_json_file(path):
    try:
        with open(path, "r") as f:
            return json.load(f)
    except (IOError, OSError, ValueError):
        return None


def read_platform_base_url_from_auth_token(path):
    if not os.path.isfile(path):
        return None
    data = read_json_file(path)
    if not isinstance(data, dict):
        return None
    base_url = data.get("baseUrl")
    if not isinstance(base_url, str) or not base_url.strip():
        return None
    return trim_trailing_slash(base_url.strip())


def dashboard_info(token_path, legacy_token_path):
    token_paths = [token_path, legacy_token_path]
    platform_base_url = None
    for path in token_paths:
        platform_base_url = read_platform_base_url_from_auth_token(path)
        if platform_base_url:
            break

    if not platform_base_url:
        return {"dashboard_url": None}
    return {"dashboard_url": platform_base_url + "/dashboard"}


def build_parser():
    parser = argparse.ArgumentParser(description="Read dbx platform information from local auth token metadata.")
    parser.add_argument("command", nargs="?", default="dashboard", choices=["dashboard"])
    parser.add_argument("--json", action="store_true", help="Print structured JSON.")
    parser.add_argument("--token-path", default=DEFAULT_AUTH_TOKEN_PATH)
    parser.add_argument("--legacy-token-path", default=LEGACY_AUTH_TOKEN_PATH)
    return parser


def main():
    args = build_parser().parse_args()
    if args.command == "dashboard":
        print(json.dumps(dashboard_info(args.token_path, args.legacy_token_path), ensure_ascii=False, indent=2))


if __name__ == "__main__":
    main()
