Spaces:
No application file
No application file
namespace Mautic\CoreBundle\IpLookup; | |
use GuzzleHttp\Client; | |
use Mautic\CoreBundle\Helper\CoreParametersHelper; | |
use Psr\Log\LoggerInterface; | |
abstract class AbstractLookup | |
{ | |
public $city = ''; | |
public $region = ''; | |
public $zipcode = ''; | |
public $country = ''; | |
public $latitude = ''; | |
public $longitude = ''; | |
public $isp = ''; | |
public $organization = ''; | |
public $timezone = ''; | |
public $extra = ''; | |
/** | |
* @var string|null IP Address | |
*/ | |
protected $ip; | |
/** | |
* Return attribution HTML displayed in the configuration UI. | |
* | |
* @return string | |
*/ | |
abstract public function getAttribution(); | |
/** | |
* Executes the lookup of the IP address. | |
*/ | |
abstract protected function lookup(); | |
public function __construct( | |
protected ?string $auth = null, | |
protected $config = null, | |
protected ?string $cacheDir = null, | |
protected ?LoggerInterface $logger = null, | |
protected ?Client $client = null, | |
protected ?CoreParametersHelper $coreParametersHelper = null | |
) { | |
} | |
/** | |
* @return $this | |
*/ | |
public function setIpAddress($ip) | |
{ | |
$this->ip = $ip; | |
if ($this->shouldPerformLookup()) { | |
// Fetch details from the service | |
$this->lookup(); | |
} | |
return $this; | |
} | |
/** | |
* Return details of the IP address lookup. | |
* | |
* @return array | |
*/ | |
public function getDetails() | |
{ | |
return [ | |
'city' => $this->city, | |
'region' => $this->region, | |
'zipcode' => $this->zipcode, | |
'country' => $this->country, | |
'latitude' => $this->latitude, | |
'longitude' => $this->longitude, | |
'isp' => $this->isp, | |
'organization' => $this->organization, | |
'timezone' => $this->timezone, | |
'extra' => $this->extra, | |
]; | |
} | |
protected function shouldPerformLookup(): bool | |
{ | |
return true; | |
} | |
} | |