Spaces:
No application file
No application file
| namespace Mautic\CoreBundle\IpLookup; | |
| use GuzzleHttp\Exception\GuzzleException; | |
| abstract class AbstractRemoteDataLookup extends AbstractLookup | |
| { | |
| /** | |
| * Method to use when communicating with the service. | |
| * | |
| * @var string | |
| */ | |
| protected $method = 'get'; | |
| /** | |
| * Get the URL to fetch data from. | |
| * | |
| * @return mixed | |
| */ | |
| abstract protected function getUrl(); | |
| /** | |
| * @return mixed | |
| */ | |
| abstract protected function parseResponse($response); | |
| /** | |
| * @return array | |
| */ | |
| protected function getHeaders() | |
| { | |
| return []; | |
| } | |
| /** | |
| * @return array | |
| */ | |
| protected function getParameters() | |
| { | |
| return []; | |
| } | |
| /** | |
| * Fetch data from lookup service. | |
| */ | |
| protected function lookup() | |
| { | |
| $url = $this->getUrl(); | |
| try { | |
| $response = ('post' == $this->method) ? | |
| $this->client->post($url, [ | |
| \GuzzleHttp\RequestOptions::BODY => $this->getParameters(), | |
| \GuzzleHttp\RequestOptions::HEADERS => $this->getHeaders(), | |
| \GuzzleHttp\RequestOptions::TIMEOUT => 10, | |
| ]) : | |
| $this->client->get($url, [ | |
| \GuzzleHttp\RequestOptions::HEADERS => $this->getHeaders(), | |
| \GuzzleHttp\RequestOptions::TIMEOUT => 10, | |
| ]); | |
| $this->parseResponse($response->getBody()); | |
| } catch (GuzzleException $exception) { | |
| if ($this->logger) { | |
| $this->logger->warning('IP LOOKUP: '.$exception->getMessage()); | |
| } | |
| } | |
| } | |
| } | |