晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/rainic/public_html/oldTZh/wp-content/plugins/digits/Twilio/ |
Upload File : |
<?php
namespace Twilio;
use ArrayIterator;
use Iterator;
use Twilio\Exceptions\DeserializeException;
use Twilio\Exceptions\RestException;
use Twilio\Http\Response;
abstract class Page implements Iterator {
protected static $metaKeys = array(
'end',
'first_page_uri',
'next_page_uri',
'last_page_uri',
'page',
'page_size',
'previous_page_uri',
'total',
'num_pages',
'start',
'uri',
);
protected $version;
protected $payload;
protected $solution;
protected $records;
public function __construct(Version $version, Response $response) {
$payload = $this->processResponse($response);
$this->version = $version;
$this->payload = $payload;
$this->solution = array();
$this->records = new ArrayIterator($this->loadPage());
}
protected function processResponse(Response $response) {
if ($response->getStatusCode() != 200 && !$this->isPagingEol($response->getContent())) {
$message = '[HTTP ' . $response->getStatusCode() . '] Unable to fetch page';
$code = $response->getStatusCode();
$content = $response->getContent();
if (is_array($content)) {
$message .= isset($content['message']) ? ': ' . $content['message'] : '';
$code = isset($content['code']) ? $content['code'] : $code;
}
throw new RestException($message, $code, $response->getStatusCode());
}
return $response->getContent();
}
protected function isPagingEol($content) {
return !is_null($content) && array_key_exists('code', $content) && $content['code'] == 20006;
}
protected function loadPage() {
$key = $this->getMeta('key');
if ($key) {
return $this->payload[$key];
} else {
$keys = array_keys($this->payload);
$key = array_diff($keys, self::$metaKeys);
$key = array_values($key);
if (count($key) == 1) {
return $this->payload[$key[0]];
}
}
// handle end of results error code
if ($this->isPagingEol($this->payload)) {
return array();
}
throw new DeserializeException('Page Records can not be deserialized');
}
protected function getMeta($key, $default=null) {
return $this->hasMeta($key) ? $this->payload['meta'][$key] : $default;
}
protected function hasMeta($key) {
return array_key_exists('meta', $this->payload) && array_key_exists($key, $this->payload['meta']);
}
public function nextPage() {
if (!$this->getNextPageUrl()) {
return null;
}
$response = $this->getVersion()->getDomain()->getClient()->request('GET', $this->getNextPageUrl());
return new static($this->getVersion(), $response, $this->solution);
}
public function getNextPageUrl() {
if ($this->hasMeta('next_page_url')) {
return $this->getMeta('next_page_url');
} else if (array_key_exists('next_page_uri', $this->payload) && $this->payload['next_page_uri']) {
return $this->getVersion()->getDomain()->absoluteUrl($this->payload['next_page_uri']);
}
return null;
}
/**
* @return Version
*/
public function getVersion() {
return $this->version;
}
public function previousPage() {
if (!$this->getPreviousPageUrl()) {
return null;
}
$response = $this->getVersion()->getDomain()->getClient()->request('GET', $this->getPreviousPageUrl());
return new static($this->getVersion(), $response, $this->solution);
}
public function getPreviousPageUrl() {
if ($this->hasMeta('previous_page_url')) {
return $this->getMeta('previous_page_url');
} else if (array_key_exists('previous_page_uri', $this->payload) && $this->payload['previous_page_uri']) {
return $this->getVersion()->getDomain()->absoluteUrl($this->payload['previous_page_uri']);
}
return null;
}
/**
* (PHP 5 >= 5.0.0)<br/>
* Return the current element
* @link http://php.net/manual/en/iterator.current.php
* @return mixed Can return any type.
*/
public function current() {
return $this->buildInstance($this->records->current());
}
abstract public function buildInstance(array $payload);
/**
* (PHP 5 >= 5.0.0)<br/>
* Move forward to next element
* @link http://php.net/manual/en/iterator.next.php
* @return void Any returned value is ignored.
*/
public function next() {
$this->records->next();
}
/**
* (PHP 5 >= 5.0.0)<br/>
* Return the key of the current element
* @link http://php.net/manual/en/iterator.key.php
* @return mixed scalar on success, or null on failure.
*/
public function key() {
return $this->records->key();
}
/**
* (PHP 5 >= 5.0.0)<br/>
* Checks if current position is valid
* @link http://php.net/manual/en/iterator.valid.php
* @return boolean The return value will be casted to boolean and then evaluated.
* Returns true on success or false on failure.
*/
public function valid() {
return $this->records->valid();
}
/**
* (PHP 5 >= 5.0.0)<br/>
* Rewind the Iterator to the first element
* @link http://php.net/manual/en/iterator.rewind.php
* @return void Any returned value is ignored.
*/
public function rewind() {
$this->records->rewind();
}
public function __toString() {
return '[Page]';
}
}