<?php

/**
 * For more information, see the
 * `IncomingPhoneNumbers API Resource
 * <http://www.twilio.com/docs/api/rest/incoming-phone-numbers#local>`_
 * documentation at twilio.com.
 */
class Services_Twilio_Rest_IncomingPhoneNumbers extends Services_Twilio_ListResource {
	function init( $client, $uri) {
		$this->setupSubresources(
			'local',
			'toll_free',
			'mobile'
		);
	}

	function create( array $params = array()) {
		return parent::_create($params);
	}

	function getList( $type, array $params = array()) {
		return $this->client->retrieveData($this->uri . "/$type", $params);
	}

	/**
	 * Return a phone number instance from its E.164 representation. If more
	 * than one number matches the search string, returns the first one.
	 *
	 * Example usage:
	 *
	 * .. code-block:: php
	 *
	 *      $number = $client->account->incoming_phone_numbers->getNumber('+14105551234');
	 *      echo $number->sid;
	 *
	 * :param string $number: The number in E.164 format, eg "+684105551234"
	 * :return:  A :php:class:`Services_Twilio_Rest_IncomingPhoneNumber` object, or null
	 * :raises: a A :php:class:`Services_Twilio_RestException` if the number is
	 *      invalid, not provided in E.164 format or for any other API exception.
	 */
	public function getNumber( $number) {
		$page = $this->getPage(0, 1, array(
			'PhoneNumber' => $number
		));
		$items = $page->getItems();
		if (is_null($items) || empty($items)) {
			return null;
		}
		return $items[0];
	}
}

class Services_Twilio_Rest_Local extends Services_Twilio_NumberType { }

class Services_Twilio_Rest_Mobile extends Services_Twilio_NumberType { }

class Services_Twilio_Rest_TollFree extends Services_Twilio_NumberType { }
