public function asn(Request $request, $as_number) { // lets only use the AS number. $as_number = $this->ipUtils->normalizeInput($as_number); $asnData = ASN::with('emails')->where('asn', $as_number)->first(); $allocation = $this->ipUtils->getAllocationEntry($as_number); $ianaAssignment = $this->ipUtils->getIanaAssignmentEntry($as_number); if (is_null($asnData) === true && $ianaAssignment === false) { $data = $this->makeStatus('Could not find ASN', false); return $this->respond($data); } $output['asn'] = $as_number; $output['name'] = isset($asnData->name) ? $asnData->name : null; $output['description_short'] = isset($asnData->description) ? $asnData->description : null; $output['description_full'] = isset($asnData->description_full) ? $asnData->description_full : null; $output['country_code'] = isset($asnData->counrty_code) ? $asnData->counrty_code : null; $output['website'] = isset($asnData->website) ? $asnData->website : null; $output['email_contacts'] = isset($asnData->email_contacts) ? $asnData->email_contacts : null; $output['abuse_contacts'] = isset($asnData->abuse_contacts) ? $asnData->abuse_contacts : null; $output['looking_glass'] = isset($asnData->looking_glass) ? $asnData->looking_glass : null; $output['traffic_estimation'] = isset($asnData->traffic_estimation) ? $asnData->traffic_estimation : null; $output['traffic_ratio'] = isset($asnData->traffic_ratio) ? $asnData->traffic_ratio : null; $output['owner_address'] = isset($asnData->owner_address) ? $asnData->owner_address : []; $output['rir_allocation']['rir_name'] = empty($allocation->rir_name) !== true ? $allocation->rir_name : null; $output['rir_allocation']['country_code'] = isset($allocation->country_code) ? $allocation->country_code : null; $output['rir_allocation']['date_allocated'] = isset($allocation->date_allocated) ? $allocation->date_allocated . ' 00:00:00' : null; $output['rir_allocation']['allocation_status'] = isset($allocation->status) ? $allocation->status : null; $output['iana_assignment']['assignment_status'] = $ianaAssignment->status; $output['iana_assignment']['description'] = $ianaAssignment->description; $output['iana_assignment']['whois_server'] = $ianaAssignment->whois_server; $output['iana_assignment']['date_assigned'] = $ianaAssignment->date_assigned; // override the ASN data with assignment data if there is no ASNData if (is_null($asnData) === true) { $output['name'] = 'IANA-' . strtoupper($ianaAssignment->status); $output['description_short'] = $ianaAssignment->description; $output['description_full'] = $ianaAssignment->description; $output['email_contacts'] = ['*****@*****.**']; $output['abuse_contacts'] = ['*****@*****.**']; $output['owner_address'] = ['Internet Assigned Numbers Authority', '12025 Waterfront Drive, Suite 300', 'Los Angeles CA 90094', 'USA']; } if ($request->has('with_ixs') === true) { $output['internet_exchanges'] = IXMember::getMembers($as_number); } if ($request->has('with_peers') === true) { $output['peers'] = ASN::getPeers($as_number); } if ($request->has('with_prefixes') === true) { $output['prefixes'] = ASN::getPrefixes($as_number); } if ($request->has('with_upstreams') === true) { $output['upstreams'] = ASN::getUpstreams($as_number); } if ($request->has('with_downstreams') === true) { $output['downstreams'] = ASN::getDownstreams($as_number); } if ($request->has('with_raw_whois') === true) { $output['raw_whois'] = isset($asnData->raw_whois) ? $asnData->raw_whois : null; } $output['date_updated'] = isset($asnData->updated_at) ? (string) $asnData->updated_at : null; return $this->sendData($output); }