Add support for named records. Create all the objects for Country model

This commit is contained in:
Gregory Oschwald 2013-05-07 15:02:53 -07:00
parent 531e11f3e2
commit 01bf8c2d7c
3 changed files with 30 additions and 9 deletions

View File

@ -7,14 +7,22 @@ class Country
// XXX - use __get__ // XXX - use __get__
public $continent; public $continent;
public $country; public $country;
public $registered_country; public $registeredCountry;
public $represented_country; public $representedCountry;
public $traits; public $traits;
public $raw; public $raw;
public function __construct($raw, $language) { public function __construct($raw, $languages) {
$this->country = new \GeoIP2\Record\Country($raw['country']);
$this->raw = $raw; $this->raw = $raw;
$this->continent = new \GeoIP2\Record\Continent($this->get('continent'), $languages);
$this->country = new \GeoIP2\Record\Country($this->get('country'), $languages);
$this->registeredCountry = new \GeoIP2\Record\Country($this->get('registered_country'), $languages);
$this->representedCountry = new \GeoIP2\Record\RepresentedCountry($this->get('represented_country'), $languages);
$this->traits = new \GeoIP2\Record\Traits($this->get('traits'));
}
private function get($field) {
return isset($this->raw[$field]) ? $this->raw[$field] : Array();
} }
} }

View File

@ -5,4 +5,17 @@ namespace GeoIP2\Record;
class Country extends AbstractPlaceRecord class Country extends AbstractPlaceRecord
{ {
private $languages;
public function __construct($record, $languages){
$this->languages = $languages;
parent::__construct($record);
}
public function name() {
foreach($this->languages as $language) {
if (isset($this->names[$language])) return $this->names[$language];
}
}
} }

View File

@ -16,14 +16,14 @@ class Client
private $user_id; private $user_id;
private $license_key; private $license_key;
private $language; private $languages;
private $base_uri = 'https://geoip.maxmind.com/geoip/v2.0'; private $base_uri = 'https://geoip.maxmind.com/geoip/v2.0';
public function __construct($user_id, $license_key, $language='en') public function __construct($user_id, $license_key, $languages=array('en'))
{ {
$this->user_id = $user_id; $this->user_id = $user_id;
$this->license_key = $license_key; $this->license_key = $license_key;
$this->language = $language; $this->languages = $languages;
} }
public function city($ip_address = 'me') public function city($ip_address = 'me')
@ -62,7 +62,7 @@ class Client
if ($response->isSuccessful()) { if ($response->isSuccessful()) {
$body = $this->handleSuccess($response, $uri); $body = $this->handleSuccess($response, $uri);
$class = "GeoIP2\\Model\\" . $class; $class = "GeoIP2\\Model\\" . $class;
return new $class($body, $this->language); return new $class($body, $this->languages);
} }
} }