. */ declare(strict_types=1); namespace FireflyIII\Services\IP; use Exception; use Log; use Requests; /** * Class IpifyOrg */ class IpifyOrg implements IPRetrievalInterface { /** * Returns the user's IP address. * * @noinspection MultipleReturnStatementsInspection * @return null|string */ public function getIP(): ?string { $result = null; try { $response = Requests::get('https://api.ipify.org'); } catch (Exception $e) { Log::warning(sprintf('The ipify.org service could not retrieve external IP: %s', $e->getMessage())); Log::warning($e->getTraceAsString()); return null; } if (200 !== $response->status_code) { Log::warning(sprintf('Could not retrieve external IP: %d %s', $response->status_code, $response->body)); return null; } return (string)$response->body; } }