- Talks to the OFFICIAL GOV.UK Fuel Finder API instead of the public CSV mirror: OAuth token (/api/v1/oauth/generate_access_token), batched paging (500/page via batch-number) over /api/v1/pfs and /api/v1/pfs/fuel-prices, joined on node_id. - Price strings parsed to pence with pounds->pence correction (< 2.0); 50-500p sane band keeps junk out of the cheapest reference. - Fuel mapping: E5/E10 as-is; B7/B7_STANDARD/B7S/B7P/B10 -> DIESEL; HVO/SDV dropped (app tracks E5/E10/DIESEL only). - lat/lng parsed from nested location strings. - Output contract IDENTICAL to fuelboard-relay (/health + /api/v1/stations), so the app/widget/alerts work unchanged; switch = point app at :8789. - CSV mirror kept as automatic fallback (FUEL_SOURCE=auto) so the full path is testable before GOV.UK One Login creds exist. - 12 unit tests against documented API shapes (no network).
16 lines
372 B
Bash
Executable File
16 lines
372 B
Bash
Executable File
#!/bin/bash
|
|
# FuelBoard Relay API launcher (official Fuel Finder API source)
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
if [ ! -f .env ]; then
|
|
echo "⚠ No .env found — running in DEMO/CSV-fallback mode (no credentials)."
|
|
fi
|
|
|
|
set -a
|
|
[ -f .env ] && source .env
|
|
set +a
|
|
|
|
PORT="${FUEL_RELAY_PORT:-8789}"
|
|
exec python3 -m uvicorn app.main:app --host 0.0.0.0 --port "$PORT"
|