"""Lesson 8: JSON and APIs - read an API response, handle errors, convert currencies. (Works offline from rates.json.)"""
import json
from pathlib import Path
HERE = Path(__file__).resolve().parent

def get_rates(url=None):
    """With internet: import requests; r = requests.get(url, timeout=10); r.raise_for_status(); return r.json()"""
    return json.loads((HERE / "rates.json").read_text())

data = get_rates()
if data.get("status") != "ok":
    raise SystemExit("API error")
print("Rates on", data["date"], "base", data["base"])
amount_inr = 250000
for cur, rate in sorted(data["rates"].items()):
    print(f"  Rs {amount_inr:,} = {cur} {amount_inr * rate:,.2f}")
usd_to_inr = 1 / data["rates"]["USD"]
print(f"1 USD = Rs {usd_to_inr:.2f}")
order = {"invoice": "INV-2001", "items": [{"code": "P104", "qty": 2}], "currency": "USD"}
print(json.dumps(order, indent=2))
print("Back from text:", json.loads(json.dumps(order))["items"][0]["qty"])
