geocoder-php / Geocoder

The most featured Geocoder library written in PHP.
https://geocoder-php.org
MIT License
3.94k stars 517 forks source link

IpInfoDb - Uncaught TypeError: Argument 11 passed to Geocoder\Model\Address #1094

Open rtiagom opened 3 years ago

rtiagom commented 3 years ago

While testing IpInfoDb with IP 1.143.27.182 I got Uncaught TypeError: Argument 11 passed to Geocoder\Model\Address::__construct() must be of the type string or null, bool given

IpInfoDB response:

  'statusCode' => string 'OK' (length=2)
  'statusMessage' => string '' (length=0)
  'ipAddress' => string '1.143.27.182' (length=12)
  'countryCode' => string 'AU' (length=2)
  'countryName' => string 'Australia' (length=9)
  'regionName' => string 'Victoria' (length=8)
  'cityName' => string 'Geelong' (length=7)
  'zipCode' => string '3220' (length=4)
  'latitude' => string '-38.1471' (length=8)
  'longitude' => string '144.361' (length=7)
  'timeZone' => string '+11:00' (length=6)

$timezone = timezone_name_from_abbr('', (int) substr($data['timeZone'], 0, strpos($data['timeZone'], ':')) * 3600, 0); timezone_name_from_abbr('', 39600, 0) // Melbourne Australia is observing DST so this does not work

The proper fix is to handle DST time or at the very minimum handle the case of timezone returning false which breaks Geocoder\Model\Address.

jbelien commented 3 years ago

Hello @rtiagom , Thanks for the notice.

Would you have time to submit a PR ?

rtiagom commented 3 years ago

@jbelien Sure, I try to submit a PR this weekend.