khm/src/khm/Objects/AbuseCheck.php

234 lines
8.0 KiB
PHP

<?php
/** @noinspection PhpMissingFieldTypeInspection */
namespace khm\Objects;
class AbuseCheck
{
/**
* The IP Address
*
* @var string
*/
public $IpAddress;
/**
* Indicates if the IP address is public or private
*
* @var bool
*/
public $IsPublic;
/**
* The version of the IP address
*
* @var int
*/
public $IpVersion;
/**
* Indicates if the IP address has been whitelisted by the provider
*
* @var bool
*/
public $IsWhitelisted;
/**
* The abuse confidence score, from 0-100
* 75 and above meaning it's potentially harmful, anything lower is considered safe but questionable
*
* @var int
*/
public $AbuseConfidenceScore;
/**
* The name of the service provider for this IP
*
* @var string|null
*/
public $ISP;
/**
* The domain address associated with this IP address
*
* @var string|null
*/
public $Domain;
/**
* The primary host name of the IP address
*
* @var string
*/
public $Hostname;
/**
* An array of hostnames associated with this IP address
*
* @var string[]
*/
public $Hostnames;
/**
* The total amount of reports that this IP received
*
* @var int
*/
public $TotalReports;
/**
* The number of distinct users that uses this IP address
*
* @var int
*/
public $NumDistinctUsers;
/**
* Indicates the last time someone reported the IP for abuse
*
* @var int|null
*/
public $LastReportedTimestamp;
/**
* The Unix Timestamp for when this record was last updated
*
* @var int
*/
public $LastUpdatedTimestamp;
/**
* The Unix Timestamp for when this record was created
*
* @var int
*/
public $CreatedTimestamp;
/**
* Returns an array representation of the object
*
* @return array
* @noinspection PhpTernaryExpressionCanBeReplacedWithConditionInspection
* @noinspection PhpCastIsUnnecessaryInspection
*/
public function toArray(): array
{
return [
'ip_address' => $this->IpAddress,
'is_public' => ($this->IsPublic == null ? false : (bool)$this->IsPublic),
'ip_version' => $this->IpVersion,
'is_whitelisted' => ($this->IsWhitelisted == null ? false : (bool)$this->IsWhitelisted),
'abuse_confidence_score' => ($this->AbuseConfidenceScore == null ? 0 : (int)$this->AbuseConfidenceScore),
'isp' => $this->ISP,
'domain' => $this->Domain,
'hostname' => $this->Hostname,
'hostnames' => ($this->Hostnames == null ? [] : $this->Hostnames),
'total_reports' => ($this->TotalReports == null ? 0 : (int)$this->TotalReports),
'num_distinct_users' => ($this->NumDistinctUsers == null ? 0 : (int)$this->NumDistinctUsers),
'last_reported_at' => ($this->LastReportedTimestamp == null ? null : $this->LastReportedTimestamp),
'last_updated_timestamp' => ($this->LastUpdatedTimestamp == null ? 0 : (int)$this->LastUpdatedTimestamp),
'created_timestamp' => ($this->CreatedTimestamp == null ? 0 : (int)$this->CreatedTimestamp)
];
}
/**
* Constructs object from an array representation
*
* @param array $data
* @return AbuseCheck
* @noinspection PhpTernaryExpressionCanBeReplacedWithConditionInspection
*/
public static function fromArray(array $data): AbuseCheck
{
$AbuseCheckObject = new AbuseCheck();
if(isset($data['ip_address']))
$AbuseCheckObject->IpAddress = $data['ip_address'];
if(isset($data['is_public']))
$AbuseCheckObject->IsPublic = (bool)$data['is_public'];
if(isset($data['ip_version']))
$AbuseCheckObject->IpVersion = (int)$data['ip_version'];
if(isset($data['is_whitelisted']))
$AbuseCheckObject->IsWhitelisted = (bool)$data['is_whitelisted'];
if(isset($data['abuse_confidence_score']))
$AbuseCheckObject->AbuseConfidenceScore = (int)$data['abuse_confidence_score'];
if(isset($data['isp']))
$AbuseCheckObject->ISP = $data['isp'];
if(isset($data['domain']))
$AbuseCheckObject->Domain = $data['domain'];
if(isset($data['hostname']))
$AbuseCheckObject->Hostname = $data['hostname'];
if(isset($data['hostnames']))
$AbuseCheckObject->Hostnames = $data['hostnames'];
if(is_array($AbuseCheckObject->Hostnames) == false)
{
$AbuseCheckObject->Hostnames = [$AbuseCheckObject->Hostnames];
}
if(isset($data['total_reports']))
$AbuseCheckObject->TotalReports = (int)$data['total_reports'];
if(isset($data['num_distinct_users']))
$AbuseCheckObject->NumDistinctUsers = (int)$data['num_distinct_users'];
if(isset($data['last_reported_at']))
$AbuseCheckObject->LastReportedTimestamp = (int)$data['last_reported_at'];
if(isset($data['last_updated_timestamp']))
$AbuseCheckObject->LastUpdatedTimestamp = (int)$data['last_updated_timestamp'];
if(isset($data['created_timestamp']))
$AbuseCheckObject->CreatedTimestamp = (int)$data['created_timestamp'];
if(isset($data['data']))
{
if(isset($data['data']['ipAddress']))
$AbuseCheckObject->IpAddress = $data['data']['ipAddress'];
if(isset($data['data']['isPublic']))
$AbuseCheckObject->IsPublic = ($data['data']['isPublic'] == null ? true : (bool)$data['data']['isPublic']);
if(isset($data['data']['ipVersion']))
$AbuseCheckObject->IpVersion = $data['data']['ipVersion'];
if(isset($data['data']['isWhitelisted']))
$AbuseCheckObject->IsWhitelisted = ($data['data']['isWhitelisted'] == null ? false : (bool)$data['data']['isWhitelisted']);
if(isset($data['data']['abuseConfidenceScore']))
$AbuseCheckObject->AbuseConfidenceScore = ($data['data']['abuseConfidenceScore'] == null ? 0 : (int)$data['data']['abuseConfidenceScore']);
if(isset($data['data']['isp']))
$AbuseCheckObject->ISP = $data['data']['isp'];
if(isset($data['data']['domain']))
$AbuseCheckObject->Domain = $data['data']['domain'];
if(isset($data['data']['hostnames']))
$AbuseCheckObject->Hostnames = $data['data']['hostnames'];
if(count($AbuseCheckObject->Hostnames) > 0)
$AbuseCheckObject->Hostname = $AbuseCheckObject->Hostnames[0];
if(isset($data['data']['totalReports']))
$AbuseCheckObject->TotalReports = ($data['data']['totalReports'] == null ? 0 : (int)$data['data']['totalReports']);
if(isset($data['data']['numDistinctUsers']))
$AbuseCheckObject->NumDistinctUsers = ($data['data']['numDistinctUsers'] == null ? 0 : (int)$data['data']['numDistinctUsers']);
if(isset($data['data']['lastReportedAt']))
$AbuseCheckObject->LastReportedTimestamp = ($data['data']['lastReportedAt'] == null ? null : (int)strtotime($data['data']['lastReportedAt']));
}
return $AbuseCheckObject;
}
}