<?php

namespace App\Development\Peering;

use Illuminate\Http\Client\Request;
use Illuminate\Support\Facades\Http;

// Public PeeringDB mock (peeringdb.com/api/net) - prefix limits for ASN approval.
// Shares its per-ASN data with the bgp add-session prefill (Bgp\Scan::peeringdb).
class Db
{
    // A network's PeeringDB record for its max-prefix limits.
    public function net(array $params, Request $request)
    {
        $asn = (int) preg_replace('/\D/', '', $params['asn'] ?? '0');
        $networks = json_decode(file_get_contents(app_path('Development/Bgp/Peeringdb.json')), true);

        // Not registered in PeeringDB - the caller treats empty data as "no record found".
        if(!isset($networks[$asn])) {
            return Http::response([ 'meta' => [], 'data' => [] ], 200);
        }

        $n = $networks[$asn];

        return Http::response([
            'meta' => [],
            'data' => [[
                'id'             => $asn,
                'asn'            => $asn,
                'name'           => $n['network_name'],
                'irr_as_set'     => $n['irr_as_set'],
                'info_prefixes4' => $n['info_prefixes4'],
                'info_prefixes6' => $n['info_prefixes6'],
            ]],
        ], 200);
    }
}
