瀏覽代碼

Updated about 50% of Zend_Service_Twitter tests

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@22324 44c647ce-9c0f-0410-b52a-842ac1e357ba
padraic 15 年之前
父節點
當前提交
a1752fb6c6

+ 36 - 94
library/Zend/Service/Twitter.php

@@ -48,13 +48,6 @@ class Zend_Service_Twitter extends Zend_Rest_Client
      * This should be reviewed in the future...
      */
     const STATUS_MAX_CHARACTERS = 246;
-
-    /**
-     * Whether or not authorization has been initialized for the current user.
-     *
-     * @var bool
-     */
-    protected $_authInitialized = false;
     
     /**
      * @var Zend_Http_CookieJar
@@ -76,13 +69,6 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     protected $_username;
     
     /**
-     * Password
-     *
-     * @var string
-     */
-    protected $_password;
-    
-    /**
      * Current method type (for method proxying)
      *
      * @var string
@@ -118,22 +104,19 @@ class Zend_Service_Twitter extends Zend_Rest_Client
      * @param  string $password
      * @return void
      */
-    public function __construct($username = null, $password = null)
+    public function __construct($username = null)
     {
         $this->setLocalHttpClient(clone self::getHttpClient());
-        if (is_array($username) && is_null($password)) {
-            if (isset($username['username']) && isset($username['password'])) {
+        if (is_array($username)) {
+            if (isset($username['username'])) {
                 $this->setUsername($username['username']);
-                $this->setPassword($username['password']);
-            } elseif (isset($username[0]) && isset($username[1])) {
+            } elseif (isset($username[0])) {
                 $this->setUsername($username[0]);
-                $this->setPassword($username[1]);
             }
-        } else if (!is_null($username)) {
+        } elseif (!is_null($username)) {
             $this->setUsername($username);
-            $this->setPassword($password);
         }
-        $this->setUri('http://twitter.com');
+        $this->setUri('http://api.twitter.com');
         $this->_localHttpClient->setHeaders('Accept-Charset', 'ISO-8859-1,utf-8');
     }
 
@@ -185,29 +168,6 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     }
 
     /**
-     * Retrieve password
-     *
-     * @return string
-     */
-    public function getPassword()
-    {
-        return $this->_password;
-    }
-
-    /**
-     * Set password
-     *
-     * @param  string $value
-     * @return Zend_Service_Twitter
-     */
-    public function setPassword($value)
-    {
-        $this->_password = $value;
-        $this->_authInitialized = false;
-        return $this;
-    }
-
-    /**
      * Proxy service methods
      *
      * @param  string $type
@@ -268,10 +228,6 @@ class Zend_Service_Twitter extends Zend_Rest_Client
         } else {
             $client->setCookieJar($this->_cookieJar);
         }
-        if (!$this->_authInitialized && $this->getUsername() !== null) {
-            $client->setAuth($this->getUsername(), $this->getPassword());
-            $this->_authInitialized = true;
-        }
     }
 
     /**
@@ -300,7 +256,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function statusPublicTimeline()
     {
         $this->_init();
-        $path = '/statuses/public_timeline.xml';
+        $path = '/1/statuses/public_timeline.xml';
         $response = $this->_get($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -321,7 +277,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function statusFriendsTimeline(array $params = array())
     {
         $this->_init();
-        $path = '/statuses/friends_timeline';
+        $path = '/1/statuses/friends_timeline';
         $_params = array();
         foreach ($params as $key => $value) {
             switch (strtolower($key)) {
@@ -367,7 +323,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function statusUserTimeline(array $params = array())
     {
         $this->_init();
-        $path = '/statuses/user_timeline';
+        $path = '/1/statuses/user_timeline';
         $_params = array();
         foreach ($params as $key => $value) {
             switch (strtolower($key)) {
@@ -417,7 +373,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function statusShow($id)
     {
         $this->_init();
-        $path = '/statuses/show/' . $this->_validInteger($id) . '.xml';
+        $path = '/1/statuses/show/' . $this->_validInteger($id) . '.xml';
         $response = $this->_get($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -434,7 +390,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function statusUpdate($status, $inReplyToStatusId = null)
     {
         $this->_init();
-        $path = '/statuses/update.xml';
+        $path = '/1/statuses/update.xml';
         $len = iconv_strlen(htmlspecialchars($status, ENT_QUOTES, 'UTF-8'), 'UTF-8');
         if ($len > self::STATUS_MAX_CHARACTERS) {
             include_once 'Zend/Service/Twitter/Exception.php';
@@ -470,7 +426,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function statusReplies(array $params = array())
     {
         $this->_init();
-        $path = '/statuses/replies.xml';
+        $path = '/1/statuses/replies.xml';
         $_params = array();
         foreach ($params as $key => $value) {
             switch (strtolower($key)) {
@@ -498,7 +454,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function statusDestroy($id)
     {
         $this->_init();
-        $path = '/statuses/destroy/' . $this->_validInteger($id) . '.xml';
+        $path = '/1/statuses/destroy/' . $this->_validInteger($id) . '.xml';
         $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -513,7 +469,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function userFriends(array $params = array())
     {
         $this->_init();
-        $path = '/statuses/friends';
+        $path = '/1/statuses/friends';
         $_params = array();
 
         foreach ($params as $key => $value) {
@@ -544,7 +500,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function userFollowers($lite = false)
     {
         $this->_init();
-        $path = '/statuses/followers.xml';
+        $path = '/1/statuses/followers.xml';
         if ($lite) {
             $this->lite = 'true';
         }
@@ -553,20 +509,6 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     }
 
     /**
-     * Get featured users
-     *
-     * @throws Zend_Http_Client_Exception if HTTP request fails or times out
-     * @return Zend_Rest_Client_Result
-     */
-    public function userFeatured()
-    {
-        $this->_init();
-        $path = '/statuses/featured.xml';
-        $response = $this->_get($path);
-        return new Zend_Rest_Client_Result($response->getBody());
-    }
-
-    /**
      * Show extended information on a user
      *
      * @param  int|string $id User ID or name
@@ -576,7 +518,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function userShow($id)
     {
         $this->_init();
-        $path = '/users/show/' . $id . '.xml';
+        $path = '/1/users/show/' . $id . '.xml';
         $response = $this->_get($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -595,7 +537,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function directMessageMessages(array $params = array())
     {
         $this->_init();
-        $path = '/direct_messages.xml';
+        $path = '/1/direct_messages.xml';
         $_params = array();
         foreach ($params as $key => $value) {
             switch (strtolower($key)) {
@@ -627,7 +569,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function directMessageSent(array $params = array())
     {
         $this->_init();
-        $path = '/direct_messages/sent.xml';
+        $path = '/1/direct_messages/sent.xml';
         $_params = array();
         foreach ($params as $key => $value) {
             switch (strtolower($key)) {
@@ -657,7 +599,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function directMessageNew($user, $text)
     {
         $this->_init();
-        $path = '/direct_messages/new.xml';
+        $path = '/1/direct_messages/new.xml';
         $len = iconv_strlen($text, 'UTF-8');
         if (0 == $len) {
             throw new Zend_Service_Twitter_Exception(
@@ -683,7 +625,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function directMessageDestroy($id)
     {
         $this->_init();
-        $path = '/direct_messages/destroy/' . $this->_validInteger($id) . '.xml';
+        $path = '/1/direct_messages/destroy/' . $this->_validInteger($id) . '.xml';
         $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -698,7 +640,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function friendshipCreate($id)
     {
         $this->_init();
-        $path = '/friendships/create/' . $id . '.xml';
+        $path = '/1/friendships/create/' . $id . '.xml';
         $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -713,7 +655,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function friendshipDestroy($id)
     {
         $this->_init();
-        $path = '/friendships/destroy/' . $id . '.xml';
+        $path = '/1/friendships/destroy/' . $id . '.xml';
         $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -728,7 +670,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function friendshipExists($id)
     {
         $this->_init();
-        $path = '/friendships/exists.xml';
+        $path = '/1/friendships/exists.xml';
         $data = array('user_a' => $this->getUsername(), 'user_b' => $id);
         $response = $this->_get($path, $data);
         return new Zend_Rest_Client_Result($response->getBody());
@@ -743,7 +685,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function accountVerifyCredentials()
     {
         $this->_init();
-        $response = $this->_get('/account/verify_credentials.xml');
+        $response = $this->_get('/1/account/verify_credentials.xml');
         return new Zend_Rest_Client_Result($response->getBody());
     }
 
@@ -756,7 +698,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function accountEndSession()
     {
         $this->_init();
-        $this->_get('/account/end_session');
+        $this->_get('/1/account/end_session');
         return true;
     }
 
@@ -769,7 +711,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function accountRateLimitStatus()
     {
         $this->_init();
-        $response = $this->_get('/account/rate_limit_status.xml');
+        $response = $this->_get('/1/account/rate_limit_status.xml');
         return new Zend_Rest_Client_Result($response->getBody());
     }
 
@@ -787,7 +729,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function favoriteFavorites(array $params = array())
     {
         $this->_init();
-        $path = '/favorites';
+        $path = '/1/favorites';
         $_params = array();
         foreach ($params as $key => $value) {
             switch (strtolower($key)) {
@@ -816,7 +758,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function favoriteCreate($id)
     {
         $this->_init();
-        $path = '/favorites/create/' . $this->_validInteger($id) . '.xml';
+        $path = '/1/favorites/create/' . $this->_validInteger($id) . '.xml';
         $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -831,7 +773,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function favoriteDestroy($id)
     {
         $this->_init();
-        $path = '/favorites/destroy/' . $this->_validInteger($id) . '.xml';
+        $path = '/1/favorites/destroy/' . $this->_validInteger($id) . '.xml';
         $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -846,7 +788,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function blockCreate($id)
     {
         $this->_init();
-        $path = '/blocks/create/' . $id . '.xml';
+        $path = '/1/blocks/create/' . $id . '.xml';
         $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -860,7 +802,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function blockDestroy($id)
     {
         $this->_init();
-        $path = '/blocks/destroy/' . $id . '.xml';
+        $path = '/1/blocks/destroy/' . $id . '.xml';
         $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
@@ -875,7 +817,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function blockExists($id, $returnResult = false)
     {
         $this->_init();
-        $path = '/blocks/exists/' . $id . '.xml';
+        $path = '/1/blocks/exists/' . $id . '.xml';
         $response = $this->_get($path);
 
         $cr = new Zend_Rest_Client_Result($response->getBody());
@@ -900,7 +842,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function blockBlocking($page = 1, $returnUserIds = false)
     {
         $this->_init();
-        $path = '/blocks/blocking';
+        $path = '/1/blocks/blocking';
         if ($returnUserIds === true) {
             $path .= '/ids';
         }
@@ -972,7 +914,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
          * Do this each time because the Zend_Http_Client instance is shared
          * among all Zend_Service_Abstract subclasses.
          */
-        $this->_localHttpClient->resetParameters()->setUri($this->_uri);
+        $this->_localHttpClient->resetParameters()->setUri((string) $this->_uri);
     }
 
     /**
@@ -987,7 +929,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_prepare($path);
         $this->_localHttpClient->setParameterGet($query);
-        return $this->_localHttpClient->request('GET');
+        return $this->_localHttpClient->request(Zend_Http_Client::GET);
     }
 
     /**
@@ -1001,7 +943,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     protected function _post($path, $data = null)
     {
         $this->_prepare($path);
-        return $this->_performPost('POST', $data);
+        return $this->_performPost(Zend_Http_Client::POST, $data);
     }
 
     /**

+ 72 - 0
tests/Zend/Service/Twitter/AllTests.php

@@ -0,0 +1,72 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Service_Delicious
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: AllTests.php 20096 2010-01-06 02:05:09Z bkarwin $
+ */
+
+require_once dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'TestHelper.php';
+
+if (!defined('PHPUnit_MAIN_METHOD')) {
+    define('PHPUnit_MAIN_METHOD', 'Zend_Service_Twitter_AllTests::main');
+}
+
+require_once 'Zend/Service/Twitter/TwitterTest2.php';
+require_once 'Zend/Service/Twitter/TwitterSearchTest.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Service_Twitter
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @group      Zend_Service
+ * @group      Zend_Service_Twitter
+ */
+class Zend_Service_Twitter_AllTests
+{
+    /**
+     * Runs this test suite
+     *
+     * @return void
+     */
+    public static function main()
+    {
+        PHPUnit_TextUI_TestRunner::run(self::suite());
+    }
+
+    /**
+     * Creates and returns this test suite
+     *
+     * @return PHPUnit_Framework_TestSuite
+     */
+    public static function suite()
+    {
+        $suite = new PHPUnit_Framework_TestSuite('Zend Framework - Zend_Service_Twitter');
+
+        $suite->addTestSuite('Zend_Service_Twitter_TwitterTest2');
+        $suite->addTestSuite('Zend_Service_Twitter_TwitterSearchTest');
+
+        return $suite;
+    }
+}
+
+
+if (PHPUnit_MAIN_METHOD == 'Zend_Service_Twitter_AllTests::main') {
+    Zend_Service_Twitter_AllTests::main();
+}

+ 6 - 6
tests/Zend/Service/Twitter/TwitterTest.php

@@ -79,7 +79,7 @@ class Zend_Service_Twitter_TwitterTest extends PHPUnit_Framework_TestCase
     }
     
     /**
-     * @issue ZF-8218
+     * @group ZF-8218
      */
     public function testUserNameNotRequired()
     {
@@ -93,7 +93,7 @@ class Zend_Service_Twitter_TwitterTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * @issue ZF-7781
+     * @group ZF-7781
      */
     public function testValidationOfScreenNames_NoError()
     {
@@ -101,7 +101,7 @@ class Zend_Service_Twitter_TwitterTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * @issue ZF-7781
+     * @group ZF-7781
      */
     public function testValidationOfScreenNames_InvalidChar()
     {
@@ -110,7 +110,7 @@ class Zend_Service_Twitter_TwitterTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * @issue ZF-7781
+     * @group ZF-7781
      */
     public function testValidationOfScreenNames_InvalidLength()
     {
@@ -119,7 +119,7 @@ class Zend_Service_Twitter_TwitterTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * @issue ZF-7781
+     * @group ZF-7781
      */
     public function testStatusUserTimelineConstructsExpectedGetUriAndOmitsInvalidParams()
     {
@@ -739,7 +739,7 @@ class Zend_Service_Twitter_TwitterTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * @issue ZF-6284
+     * @group ZF-6284
      */
     public function testTwitterObjectsSoNotShareSameHttpClientToPreventConflictingAuthentication()
     {

+ 669 - 0
tests/Zend/Service/Twitter/TwitterTest2.php

@@ -0,0 +1,669 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Service_Twitter
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: TwitterTest.php 22318 2010-05-29 18:24:27Z padraic $
+ */
+
+if (!defined('PHPUnit_MAIN_METHOD')) {
+    define('PHPUnit_MAIN_METHOD', 'Zend_Service_Twitter_TwitterTest2::main');
+}
+
+/**
+ * Test helper
+ */
+require_once dirname(__FILE__) . '/../../../TestHelper.php';
+
+/** Zend_Service_Twitter */
+require_once 'Zend/Service/Twitter.php';
+
+/** Zend_Http_Client */
+require_once 'Zend/Http/Client.php';
+
+/** Zend_Http_Client_Adapter_Test */
+require_once 'Zend/Http/Client/Adapter/Test.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Service_Twitter
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @group      Zend_Service
+ * @group      Zend_Service_Twitter
+ */
+class Zend_Service_Twitter_TwitterTest2 extends PHPUnit_Framework_TestCase
+{
+
+    /**
+     * Runs the test methods of this class.
+     *
+     * @return void
+     */
+    public static function main()
+    {
+        $suite = new PHPUnit_Framework_TestSuite(__CLASS__);
+        $result = PHPUnit_TextUI_TestRunner::run($suite);
+    }
+    
+    public function teardown()
+    {
+        Zend_Service_Abstract::setHttpClient(new Zend_Http_Client);
+    }
+    
+    /**
+     * @group ZF-8218
+     */
+    public function testUserNameNotRequired()
+    {    
+        $twitter = new Zend_Service_Twitter();
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'users/show/twitter.xml', Zend_Http_Client::GET, 'users.show.twitter.xml'
+        ));
+        $exists = $twitter->user->show('twitter')->id() !== null;
+        $this->assertTrue($exists);
+    }
+
+    /**
+     * @group ZF-7781
+     */
+    public function testRetrievingStatusesWithValidScreenNameThrowsNoInvalidScreenNameException()
+    {
+        $twitter = new Zend_Service_Twitter();
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'statuses/user_timeline.xml', Zend_Http_Client::GET, 'user_timeline.twitter.xml'
+        ));
+        $twitter->status->userTimeline(array('screen_name' => 'twitter'));
+    }
+
+    /**
+     * @group ZF-7781
+     * @expectedException Zend_Service_Twitter_Exception
+     */
+    public function testRetrievingStatusesWithInvalidScreenNameCharacterThrowsInvalidScreenNameException()
+    {
+        $twitter = new Zend_Service_Twitter();
+        $twitter->status->userTimeline(array('screen_name' => 'abc.def'));
+    }
+
+    /**
+     * @group ZF-7781
+     */
+    public function testRetrievingStatusesWithInvalidScreenNameLengthThrowsInvalidScreenNameException()
+    {
+        $this->setExpectedException('Zend_Service_Twitter_Exception');
+        $twitter = new Zend_Service_Twitter();
+        $twitter->status->userTimeline(array('screen_name' => 'abcdef_abc123_abc123x'));
+    }
+
+    /**
+     * @group ZF-7781
+     */
+    public function testStatusUserTimelineConstructsExpectedGetUriAndOmitsInvalidParams()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'statuses/user_timeline/783214.xml', Zend_Http_Client::GET, 'user_timeline.twitter.xml', array(
+                'page' => '1',
+                'count' => '123',
+                'user_id' => '783214',
+                'since_id' => '10000',
+                'max_id' => '20000',
+                'screen_name' => 'twitter'
+            )
+        ));
+        $twitter->status->userTimeline(array(
+            'id' => '783214',
+            'since' => '+2 days', /* invalid param since Apr 2009 */
+            'page' => '1',
+            'count' => '123',
+            'user_id' => '783214',
+            'since_id' => '10000',
+            'max_id' => '20000',
+            'screen_name' => 'twitter'
+        ));
+    }
+
+    public function testOverloadingGetShouldReturnObjectInstanceWithValidMethodType()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $return = $twitter->status;
+        $this->assertSame($twitter, $return);
+    }
+
+    /**
+     * @expectedException Zend_Service_Twitter_Exception
+     */
+    public function testOverloadingGetShouldthrowExceptionWithInvalidMethodType()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $return = $twitter->foo;
+    }
+
+    /**
+     * @expectedException Zend_Service_Twitter_Exception
+     */
+    public function testOverloadingGetShouldthrowExceptionWithInvalidFunction()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $return = $twitter->foo();
+    }
+
+    public function testMethodProxyingDoesNotThrowExceptionsWithValidMethods()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'statuses/public_timeline.xml', Zend_Http_Client::GET, 'public_timeline.xml'
+        ));
+        $twitter->status->publicTimeline();
+    }
+
+    /**
+     * @expectedException Zend_Service_Twitter_Exception
+     */
+    public function testMethodProxyingThrowExceptionsWithInvalidMethods()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $twitter->status->foo();
+    }
+    
+    public function testVerifiedCredentials()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'account/verify_credentials.xml', Zend_Http_Client::GET, 'account.verify_credentials.xml'
+        ));
+        $response = $twitter->account->verifyCredentials();
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+    }
+
+    public function testPublicTimelineStatusReturnsResults()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'statuses/public_timeline.xml', Zend_Http_Client::GET, 'public_timeline.xml'
+        ));
+        $response = $twitter->status->publicTimeline();
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+    }
+
+    public function testRateLimitStatusReturnsResults()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'account/rate_limit_status.xml', Zend_Http_Client::GET, 'rate_limit_status.xml'
+        ));
+        $response = $twitter->account->rateLimitStatus();
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+    }
+
+    public function testRateLimitStatusHasHitsLeft()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'account/rate_limit_status.xml', Zend_Http_Client::GET, 'rate_limit_status.xml'
+        ));
+        $response = $twitter->account->rateLimitStatus();
+        $remaining_hits = $response->toValue($response->{'remaining-hits'});
+        $this->assertEquals(150, $remaining_hits);
+    }
+    
+    public function testAccountEndSession()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'account/end_session', Zend_Http_Client::GET
+        ));
+        $response = $twitter->account->endSession();
+        $this->assertTrue($response);
+    }
+
+    /**
+     * TODO: Check actual purpose. New friend returns XML response, existing
+     * friend returns a 403 code.
+     */
+    public function testFriendshipCreate()
+    {
+        $twitter = new Zend_Service_Twitter;
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'friendships/create/twitter.xml', Zend_Http_Client::POST, 'friendships.create.twitter.xml'
+        ));
+        $response = $twitter->friendship->create('twitter');
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+    }
+
+    /**
+     * TODO: Mismatched behaviour from API. Per the API this can assert the
+     * existence of a friendship between any two users (not just the current
+     * user). We should expand the method or add a better fit method for
+     * general use.
+     */
+    public function testFriendshipExists()
+    {
+        $twitter = new Zend_Service_Twitter('padraicb');
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'friendships/exists.xml', Zend_Http_Client::GET, 'friendships.exists.twitter.xml',
+            array('user_a'=>'padraicb', 'user_b'=>'twitter')
+        ));
+        $response = $twitter->friendship->exists('twitter');
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+    }
+
+    public function testFriendsTimelineWithPageReturnsResults()
+    {   
+        $twitter = new Zend_Service_Twitter;
+        $twitter->setLocalHttpClient($this->_stubTwitter(
+            'statuses/friends_timeline.xml', Zend_Http_Client::GET, 'statuses.friends_timeline.page.xml',
+            array('page'=>3)
+        ));
+        $response = $twitter->status->friendsTimeline(array('page' => 3));
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+    }
+
+    /**
+     * @return void
+     */
+    public function testFriendsTimelineWithCountReturnsResults()
+    {$this->markTestIncomplete();
+        /* @var $response Zend_Rest_Client_Result */
+        $response = $this->twitter->status->friendsTimeline(array('id' => 'zftestuser1', 'count' => '2'));
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+
+        $this->assertTrue(isset($response->status));
+        $this->assertEquals(2, count($response->status), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+    }
+
+    /**
+     * @return void
+     */
+    public function testUserTimelineStatusWithPageAndTwoTweetsReturnsResults()
+    {$this->markTestIncomplete();
+        /* @var $response Zend_Rest_Client_Result */
+        $response = $this->twitter->status->userTimeline(array('id' => 'zftestuser1', 'count' => 2));
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $raw_response = $httpResponse->getHeadersAsString() . $httpResponse->getBody();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+
+        $this->assertTrue(isset($response->status));
+        $this->assertEquals(2, count($response->status), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+    }
+
+    public function testUserTimelineStatusShouldReturnFortyResults()
+    {$this->markTestIncomplete();
+        /* @var $response Zend_Rest_Client_Result */
+        $response = $this->twitter->status->userTimeline(array('id' => 'zftestuser1', 'count' => 40));
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+
+        $this->assertTrue(isset($response->status));
+        $this->assertEquals(40, count($response->status));
+    }
+
+    /**
+     * @return void
+     */
+    public function testPostStatusUpdateReturnsResponse()
+    {$this->markTestIncomplete();
+        /* @var $response Zend_Rest_Client_Result */
+        $response = $this->twitter->status->update('Test Message - ' . rand());
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+        $this->assertTrue(isset($response->status));
+    }
+
+    /**
+     * $return void
+     */
+    public function testPostStatusUpdateToLongShouldThrowException()
+    {$this->markTestIncomplete();
+        try {
+            $response = $this->twitter->status->update('Test Message - ' . str_repeat(' Hello ', 140));
+            $this->fail('Trying to post a status with > 140 character should throw exception');
+        } catch (Exception $e) {
+        }
+    }
+
+    public function testPostStatusUpdateUTF8ShouldNotThrowException()
+    {$this->markTestIncomplete();
+        try {
+            $response = $this->twitter->status->update(str_repeat('M�r', 46) . 'M�');
+        } catch (Exception $e) {
+            $this->fail('Trying to post a utf8 string of 140 chars should not throw exception');
+        }
+    }
+
+    /**
+     * $return void
+     */
+    public function testPostStatusUpdateEmptyShouldThrowException()
+    {$this->markTestIncomplete();
+        try {
+            $response = $this->twitter->status->update('');
+            $this->fail('Trying to post an empty status should throw exception');
+        } catch (Exception $e) {
+        }
+    }
+
+    /**
+     * @return void
+     */
+    public function testShowStatusReturnsResponse()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->status->publicTimeline();
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+
+        $status_id = $response->toValue($response->status->id);
+        $this->assertType('numeric', $status_id);
+
+        $response2 = $this->twitter->status->show($status_id);
+        $this->assertTrue($response2 instanceof Zend_Rest_Client_Result);
+
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+        $this->assertTrue(isset($response->status));
+
+    }
+
+    /**
+     * @return void
+     */
+    public function testCreateFavoriteStatusReturnsResponse()
+    {$this->markTestIncomplete();
+        /* @var $response Zend_Rest_Client_Result */
+        $response = $this->twitter->status->userTimeline();
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+
+        $update_id = $response->toValue($response->status->id);
+        $this->assertType('numeric', $update_id);
+
+        $response2 = $this->twitter->favorite->create($update_id);
+        $this->assertTrue($response2 instanceof Zend_Rest_Client_Result);
+
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+        $this->assertTrue(isset($response->status));
+
+    }
+
+    /**
+     * @return void
+     */
+    public function testFavoriteFavoriesReturnsResponse()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->favorite->favorites();
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+        $this->assertTrue(isset($response->status));
+    }
+
+    public function testDestroyFavoriteReturnsResponse()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->favorite->favorites();
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+
+        $update_id = $response->toValue($response->status->id);
+        $this->assertType('numeric', $update_id);
+
+        $response2 = $this->twitter->favorite->destroy($update_id);
+        $this->assertTrue($response2 instanceof Zend_Rest_Client_Result);
+
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+        $this->assertTrue(isset($response->status));
+    }
+
+    public function testStatusDestroyReturnsResult()
+    {$this->markTestIncomplete();
+        /* @var $response Zend_Rest_Client_Result */
+        $response = $this->twitter->status->userTimeline();
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+
+        $update_id = $response->toValue($response->status->id);
+        $this->assertType('numeric', $update_id);
+
+        $response2 = $this->twitter->status->destroy($update_id);
+        $this->assertTrue($response2 instanceof Zend_Rest_Client_Result);
+
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+        $this->assertTrue(isset($response->status));
+    }
+
+    public function testUserFriendsReturnsResults()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->user->friends();
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+        $this->assertTrue(isset($response->status));
+    }
+
+    public function testUserFolloersReturnsResults()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->user->followers(array('id' => 'zftestuser1'));
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+        $this->assertTrue(isset($response->status));
+    }
+
+    public function testUserFriendsSpecificUserReturnsResults()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->user->friends(array('id' => 'ZendRssFeed'));
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+        $this->assertTrue(isset($response->status), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+
+        return $response;
+    }
+
+    public function testUserShowByIdReturnsResults()
+    {$this->markTestIncomplete();
+        $userInfo = $this->testUserFriendsSpecificUserReturnsResults();
+        $userId = $userInfo->toValue($userInfo->user->id);
+
+        $response = $this->twitter->user->show($userId);
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+
+        $this->assertEquals($userInfo->toValue($userInfo->user->name), $response->toValue($response->name));
+        $this->assertEquals($userId, $response->toValue($response->id));
+    }
+
+    public function testUserShowByNameReturnsResults()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->user->show('zftestuser1');
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+
+        $this->assertEquals('zftestuser1', $response->toValue($response->screen_name));
+    }
+
+    public function testStatusRepliesReturnsResults()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->status->replies(array('page' => 1, 'since_id' => 10000, 'invalid_option' => 'doh'));
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+    }
+
+    /**
+     * @return void
+     */
+    public function testFriendshipDestory()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->friendship->destroy('zftestuser1');
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+
+        $httpClient = $this->twitter->getLocalHttpClient();
+        $httpRequest = $httpClient->getLastRequest();
+        $httpResponse = $httpClient->getLastResponse();
+        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+    }
+
+    /**
+     * @return void
+     */
+    public function testBlockingCreate()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->block->create('zftestuser1');
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $this->assertEquals('zftestuser1', (string) $response->screen_name);
+    }
+
+    /**
+     * @return void
+     */
+    public function testBlockingExistsReturnsTrueWhenBlockExists()
+    {$this->markTestIncomplete();
+        $this->assertTrue($this->twitter->block->exists('zftestuser1'));
+    }
+
+    /**
+     * @return void
+     */
+    public function testBlockingBlocked()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->block->blocking();
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $this->assertEquals('zftestuser1', (string) $response->user->screen_name);
+    }
+
+    /**
+     * @return void
+     */
+    public function testBlockingBlockedReturnsIds()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->block->blocking(1, true);
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $this->assertEquals('16935247', (string) $response->id);
+    }
+
+    /**
+     * @return void
+     */
+    public function testBlockingDestroy()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->block->destroy('zftestuser1');
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+        $this->assertEquals('zftestuser1', (string) $response->screen_name);
+    }
+
+    /**
+     * @return void
+     */
+    public function testBlockingExistsReturnsFalseWhenBlockDoesNotExists()
+    {$this->markTestIncomplete();
+        $this->assertFalse($this->twitter->block->exists('zftestuser1'));
+    }
+
+    /**
+     * @return void
+     */
+    public function testBlockingExistsReturnsOjectWhenFlagPassed()
+    {$this->markTestIncomplete();
+        $response = $this->twitter->block->exists('zftestuser1', true);
+        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
+    }
+
+    /**
+     * Insert Test Data
+     *
+     */
+    protected function insertTestTwitterData()
+    {$this->markTestIncomplete();
+        $twitter = new Zend_Service_Twitter('zftestuser1', 'zftestuser1');
+        // create 10 new entries
+        for ($x = 0; $x < 10; $x++) {
+            $twitter->status->update('Test Message - ' . $x);
+        }
+        $twitter->account->endSession();
+    }
+
+    /**
+     * @group ZF-6284
+     */
+    public function testTwitterObjectsSoNotShareSameHttpClientToPreventConflictingAuthentication()
+    {$this->markTestIncomplete();
+        $twitter1 = new Zend_Service_Twitter('zftestuser1', 'zftestuser1');
+        $twitter2 = new Zend_Service_Twitter('zftestuser2', 'zftestuser2');
+        $this->assertFalse($twitter1->getLocalHttpClient() === $twitter2->getLocalHttpClient());
+    }
+    
+    /**
+     * Quick reusable Twitter Service stub setup.
+     */
+    protected function _stubTwitter($path, $method, $responseFile = null, array $params = null)
+    {
+        $client = $this->getMock('Zend_Http_Client');
+        $client->expects($this->any())->method('resetParameters')
+            ->will($this->returnValue($client));
+        $client->expects($this->once())->method('setUri')
+            ->with('http://api.twitter.com/1/' . $path);
+        $response = $this->getMock('Zend_Http_Response', array(), array(), '', false);
+        if (!is_null($params)) {
+            $setter = 'setParameter' . ucfirst(strtolower($method));
+            $client->expects($this->once())->method($setter)->with($params);
+        }
+        $client->expects($this->once())->method('request')->with($method)
+            ->will($this->returnValue($response));
+        $response->expects($this->any())->method('getBody')
+            ->will($this->returnValue(
+                isset($responseFile) ? file_get_contents(dirname(__FILE__) . '/_files/' . $responseFile) : ''
+            ));
+        return $client;
+    }
+}
+
+if (PHPUnit_MAIN_METHOD == 'Zend_Service_TwitterTest2::main') {
+    Zend_Service_TwitterTest2::main();
+}

+ 46 - 0
tests/Zend/Service/Twitter/_files/account.verify_credentials.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<user>
+  <id>9075802</id>
+  <name>Pádraic Brady</name>
+  <screen_name>padraicb</screen_name>
+  <location>Dublin, Ireland, Europe!</location>
+  <description>PHP Developer, Open Source Contributor, and FS Audit Consultant</description>
+  <profile_image_url>http://a1.twimg.com/profile_images/374757042/twitterProfilePhoto_normal.jpg</profile_image_url>
+  <url>http://blog.astrumfutura.com</url>
+  <protected>false</protected>
+  <followers_count>847</followers_count>
+  <profile_background_color>022330</profile_background_color>
+  <profile_text_color>333333</profile_text_color>
+  <profile_link_color>0084B4</profile_link_color>
+  <profile_sidebar_fill_color>C0DFEC</profile_sidebar_fill_color>
+  <profile_sidebar_border_color>a8c7f7</profile_sidebar_border_color>
+  <friends_count>468</friends_count>
+  <created_at>Mon Sep 24 19:35:22 +0000 2007</created_at>
+  <favourites_count>20</favourites_count>
+  <utc_offset>0</utc_offset>
+  <time_zone>Dublin</time_zone>
+  <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme15/bg.png</profile_background_image_url>
+  <profile_background_tile>false</profile_background_tile>
+  <notifications>false</notifications>
+  <geo_enabled>false</geo_enabled>
+  <verified>false</verified>
+  <following>false</following>
+  <statuses_count>5927</statuses_count>
+  <lang>en</lang>
+  <contributors_enabled>false</contributors_enabled>
+  <status>
+    <created_at>Sat May 29 18:05:59 +0000 2010</created_at>
+    <id>14990035001</id>
+    <text>Dennis Hopper is no longer with us? :( RIP.</text>
+    <source>&lt;a href="http://www.seesmic.com/" rel="nofollow"&gt;Seesmic&lt;/a&gt;</source>
+    <truncated>false</truncated>
+    <in_reply_to_status_id/>
+    <in_reply_to_user_id/>
+    <favorited>false</favorited>
+    <in_reply_to_screen_name/>
+    <geo/>
+    <coordinates/>
+    <place/>
+    <contributors/>
+  </status>
+</user>

+ 48 - 0
tests/Zend/Service/Twitter/_files/friendships.create.twitter.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<user>
+  <id>783214</id>
+  <name>Twitter</name>
+  <screen_name>twitter</screen_name>
+  <location>San Francisco, CA</location>
+  <description>Always wondering what's happening. </description>
+  <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+  <url>http://twitter.com</url>
+  <protected>false</protected>
+  <followers_count>3228781</followers_count>
+  <profile_background_color>ACDED6</profile_background_color>
+  <profile_text_color>333333</profile_text_color>
+  <profile_link_color>038543</profile_link_color>
+  <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+  <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+  <friends_count>247</friends_count>
+  <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+  <favourites_count>2</favourites_count>
+  <utc_offset>-28800</utc_offset>
+  <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+  <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme18/bg.gif</profile_background_image_url>
+  <profile_background_tile>false</profile_background_tile>
+  <notifications>false</notifications>
+  <geo_enabled>false</geo_enabled>
+  <verified>true</verified>
+  <following>true</following>
+  <statuses_count>745</statuses_count>
+  <lang>en</lang>
+  <contributors_enabled>true</contributors_enabled>
+  <status>
+    <created_at>Fri May 28 21:14:05 +0000 2010</created_at>
+    <id>14932507266</id>
+    <text>Good news for people everywhere http://bit.ly/b1Cf9A</text>
+    <source>web</source>
+    <truncated>false</truncated>
+    <in_reply_to_status_id/>
+    <in_reply_to_user_id/>
+    <favorited>false</favorited>
+    <in_reply_to_screen_name/>
+    <geo/>
+    <coordinates/>
+    <place/>
+    <contributors>
+      <user_id>16739704</user_id>
+    </contributors>
+  </status>
+</user>

+ 1 - 0
tests/Zend/Service/Twitter/_files/friendships.exists.twitter.xml

@@ -0,0 +1 @@
+<friends>true</friends>

+ 909 - 0
tests/Zend/Service/Twitter/_files/public_timeline.xml

@@ -0,0 +1,909 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<statuses type="array">
+<status>
+  <created_at>Sun May 30 00:31:38 +0000 2010</created_at>
+  <id>15007779000</id>
+  <text>Vamos x la 2da peliculita  http://myloc.me/7AsT6</text>
+  <source>&lt;a href="http://ubertwitter.com" rel="nofollow"&gt;UberTwitter&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>78485547</id>
+    <name>veronica martinez</name>
+    <screen_name>PillitaMartinez</screen_name>
+    <location>ÜT: 19.830304,-90.532719</location>
+    <description/>
+    <profile_image_url>http://a1.twimg.com/profile_images/825836252/DSCF3118_normal.JPG</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>118</followers_count>
+    <profile_background_color>DBE9ED</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>CC3366</profile_link_color>
+    <profile_sidebar_fill_color>E6F6F9</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>DBE9ED</profile_sidebar_border_color>
+    <friends_count>238</friends_count>
+    <created_at>Wed Sep 30 02:10:26 +0000 2009</created_at>
+    <favourites_count>1</favourites_count>
+    <utc_offset>-21600</utc_offset>
+    <time_zone>Central Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme17/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>1163</statuses_count>
+    <lang>es</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo xmlns:georss="http://www.georss.org/georss">
+    <georss:point>19.830304 -90.532719</georss:point>
+  </geo>
+  <coordinates xmlns:georss="http://www.georss.org/georss">
+    <georss:point>19.830304 -90.532719</georss:point>
+  </coordinates>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:37 +0000 2010</created_at>
+  <id>15007778000</id>
+  <text>vh1 classic es una buena forma de matar el aburrimiento o de despertar de una siesta</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>27191178</id>
+    <name>sinistro iturralde</name>
+    <screen_name>sinistrobjj</screen_name>
+    <location>arround the world</location>
+    <description>multiple times BJJ WORLD CHAMP</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/879992980/28159_413740013932_591928932_5147275_6661219_n_1__normal.jpg</profile_image_url>
+    <url>http://www.alliance-ecuador.blogspot.com</url>
+    <protected>false</protected>
+    <followers_count>99</followers_count>
+    <profile_background_color>1A1B1F</profile_background_color>
+    <profile_text_color>666666</profile_text_color>
+    <profile_link_color>2FC2EF</profile_link_color>
+    <profile_sidebar_fill_color>252429</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>181A1E</profile_sidebar_border_color>
+    <friends_count>89</friends_count>
+    <created_at>Sat Mar 28 06:25:43 +0000 2009</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-21600</utc_offset>
+    <time_zone>Central Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://a3.twimg.com/profile_background_images/50908903/_MG_4623.jpg</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications/>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>945</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:35 +0000 2010</created_at>
+  <id>15007777000</id>
+  <text>at home watching eurovision missed it so yea :/ :L lol haha</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>63556065</id>
+    <name>rebekah n</name>
+    <screen_name>destinyxcyrus</screen_name>
+    <location/>
+    <description/>
+    <profile_image_url>http://a3.twimg.com/profile_images/930881677/100410_172128_normal.jpg</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>24</followers_count>
+    <profile_background_color>131516</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>009999</profile_link_color>
+    <profile_sidebar_fill_color>efefef</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>eeeeee</profile_sidebar_border_color>
+    <friends_count>67</friends_count>
+    <created_at>Thu Aug 06 22:11:37 +0000 2009</created_at>
+    <favourites_count>0</favourites_count>
+    <utc_offset/>
+    <time_zone/>
+    <profile_background_image_url>http://a3.twimg.com/profile_background_images/67769949/zwbra7.jpg</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>458</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:31 +0000 2010</created_at>
+  <id>15007774000</id>
+  <text>Milhares de pessoas prestigiam lançamento do programa Minha Casa, Minha Vida em Juazeiro. www.sertaocentral.com.br</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>79738493</id>
+    <name>Site Sertão Central</name>
+    <screen_name>sertao_central</screen_name>
+    <location>Brasil</location>
+    <description>Higo Carlos</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/661970544/logo_normal.jpg</profile_image_url>
+    <url>http://www.sertaocentral.com.br</url>
+    <protected>false</protected>
+    <followers_count>761</followers_count>
+    <profile_background_color>022330</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>0084B4</profile_link_color>
+    <profile_sidebar_fill_color>C0DFEC</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>a8c7f7</profile_sidebar_border_color>
+    <friends_count>1996</friends_count>
+    <created_at>Sun Oct 04 14:12:27 +0000 2009</created_at>
+    <favourites_count>6</favourites_count>
+    <utc_offset>-14400</utc_offset>
+    <time_zone>Santiago</time_zone>
+    <profile_background_image_url>http://a3.twimg.com/profile_background_images/44248325/higo.jpg</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>1126</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:30 +0000 2010</created_at>
+  <id>15007773000</id>
+  <text>Wonderin why my nipple hurtin my dumb ass had money stuck in my ring lmao*</text>
+  <source>&lt;a href="http://blackberry.com/twitter" rel="nofollow"&gt;Twitter for BlackBerry®&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>127754413</id>
+    <name>*Coco*</name>
+    <screen_name>thiicknic69</screen_name>
+    <location>Harlem home of the Greatest*</location>
+    <description>Bad chocolate bitch nuff said*  href=http://mylikes.com/signup?token=thiicknic69img src=http://mylikes.com/images/mylikes125.png//</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/880181726/100391586_normal.jpg</profile_image_url>
+    <url>http://null</url>
+    <protected>false</protected>
+    <followers_count>366</followers_count>
+    <profile_background_color>C0DEED</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>0084B4</profile_link_color>
+    <profile_sidebar_fill_color>DDEEF6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>C0DEED</profile_sidebar_border_color>
+    <friends_count>360</friends_count>
+    <created_at>Tue Mar 30 04:10:19 +0000 2010</created_at>
+    <favourites_count>0</favourites_count>
+    <utc_offset/>
+    <time_zone/>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/88880974/Jan23_014.jpg</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>4170</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:29 +0000 2010</created_at>
+  <id>15007772000</id>
+  <text>ハルピン・トゥルルルソン?</text>
+  <source>&lt;a href="http://apiwiki.twitter.com/" rel="nofollow"&gt;API&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>128592391</id>
+    <name>ピザまん</name>
+    <screen_name>pizaman_</screen_name>
+    <location>せいろ</location>
+    <description>蒸したてあつあつのピザまんだよ!【自動botです。なにかありましたらDMをお送りください】</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/790683386/o0350046010331203264_1__normal.jpg</profile_image_url>
+    <url>http://pleurer.web.fc2.com/newdir/pizaman.html</url>
+    <protected>false</protected>
+    <followers_count>89</followers_count>
+    <profile_background_color>9ae4e8</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>0000ff</profile_link_color>
+    <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
+    <friends_count>93</friends_count>
+    <created_at>Thu Apr 01 15:47:08 +0000 2010</created_at>
+    <favourites_count>0</favourites_count>
+    <utc_offset>-36000</utc_offset>
+    <time_zone>Hawaii</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme1/bg.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>3890</statuses_count>
+    <lang>ja</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:27 +0000 2010</created_at>
+  <id>15007771000</id>
+  <text>irei fazer um formspring.me para o #euja_ ok? hahaha :)</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>142114624</id>
+    <name>euja...</name>
+    <screen_name>euja_</screen_name>
+    <location/>
+    <description>Um twitter feito por @karol_arantes e @analuiza_farias , no dia 09.05.10 ; com a inteção de sempre postar... eu já quis.. auehaieuhaeiuha. :) </description>
+    <profile_image_url>http://a3.twimg.com/profile_images/939283957/e_normal.jpg</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>349</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>ff6a3d</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>e1bbf0</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>1cc758</profile_sidebar_border_color>
+    <friends_count>281</friends_count>
+    <created_at>Mon May 10 00:54:47 +0000 2010</created_at>
+    <favourites_count>1</favourites_count>
+    <utc_offset>-14400</utc_offset>
+    <time_zone>Santiago</time_zone>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/106463556/3487472232_05ea679f3c.jpg</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>1186</statuses_count>
+    <lang>es</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:26 +0000 2010</created_at>
+  <id>15007770000</id>
+  <text>本日、「SOLAR FREQUENCY 」スガユウスケは13時より90分Playします。  http://www.techno.vc/</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>123203587</id>
+    <name>SilentMusicTW</name>
+    <screen_name>SilentMusicTW</screen_name>
+    <location/>
+    <description>柏を中心にTECHNO PARTY 'FUTURETECH'と'BIORIC'を開催しています</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/780902559/35855767_22_normal.jpg</profile_image_url>
+    <url>http://www.techno.vc/</url>
+    <protected>false</protected>
+    <followers_count>60</followers_count>
+    <profile_background_color>9ae4e8</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>0000ff</profile_link_color>
+    <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
+    <friends_count>116</friends_count>
+    <created_at>Mon Mar 15 09:56:59 +0000 2010</created_at>
+    <favourites_count>0</favourites_count>
+    <utc_offset>32400</utc_offset>
+    <time_zone>Tokyo</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme1/bg.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>36</statuses_count>
+    <lang>ja</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:25 +0000 2010</created_at>
+  <id>15007769000</id>
+  <text>justin bieber is sexy</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>146108581</id>
+    <name>Dalisa </name>
+    <screen_name>ilovejustinB493</screen_name>
+    <location>California</location>
+    <description>I love justin bieber and i am training to become a singer</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/939650119/Photo_on_2010-05-28_at_19.44__7_normal.jpg</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>1</followers_count>
+    <profile_background_color>642D8B</profile_background_color>
+    <profile_text_color>3D1957</profile_text_color>
+    <profile_link_color>FF0000</profile_link_color>
+    <profile_sidebar_fill_color>7AC3EE</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>65B0DA</profile_sidebar_border_color>
+    <friends_count>4</friends_count>
+    <created_at>Thu May 20 16:25:16 +0000 2010</created_at>
+    <favourites_count>10</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme10/bg.gif</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>55</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:22 +0000 2010</created_at>
+  <id>15007767000</id>
+  <text>Im not there ,missin the slack promotions lol RT @abunny_: @MyKhal - LMAO. you here?. where you at?.</text>
+  <source>&lt;a href="http://www.echofon.com/" rel="nofollow"&gt;Echofon&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>30716605</id>
+    <name>MyKhal Angelo</name>
+    <screen_name>MyKhal</screen_name>
+    <location>B R O O K L Y N</location>
+    <description>If skill could kill then my art might Body Ya !  </description>
+    <profile_image_url>http://a3.twimg.com/profile_images/643472599/Screen_shot_2010-01-20_at_3.41.00_AM_normal.png</profile_image_url>
+    <url>http://Www.Grimeyville.Com</url>
+    <protected>false</protected>
+    <followers_count>437</followers_count>
+    <profile_background_color>000000</profile_background_color>
+    <profile_text_color>050505</profile_text_color>
+    <profile_link_color>545a4d</profile_link_color>
+    <profile_sidebar_fill_color>f4f3f1</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>f4f3f1</profile_sidebar_border_color>
+    <friends_count>396</friends_count>
+    <created_at>Sun Apr 12 20:37:49 +0000 2009</created_at>
+    <favourites_count>88</favourites_count>
+    <utc_offset>-18000</utc_offset>
+    <time_zone>Quito</time_zone>
+    <profile_background_image_url>http://a3.twimg.com/profile_background_images/80588363/mikey-twitter.gif</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>13284</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:21 +0000 2010</created_at>
+  <id>15007766000</id>
+  <text>Uyu Damla uyu sabah kalkılamayacak sanırım :S Uyyykkkuuuuu ZZzzzzzZZZZzzzzzZzZzzZ</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>84396856</id>
+    <name>Damla YILMAZ</name>
+    <screen_name>yakamozdamla</screen_name>
+    <location/>
+    <description/>
+    <profile_image_url>http://a1.twimg.com/profile_images/905579364/GetAttachment_normal.jpg</profile_image_url>
+    <url>http://twitter.com/yakamozdamla</url>
+    <protected>false</protected>
+    <followers_count>63</followers_count>
+    <profile_background_color>1A1B1F</profile_background_color>
+    <profile_text_color>9c009c</profile_text_color>
+    <profile_link_color>258505</profile_link_color>
+    <profile_sidebar_fill_color>252429</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>181A1E</profile_sidebar_border_color>
+    <friends_count>53</friends_count>
+    <created_at>Thu Oct 22 19:03:22 +0000 2009</created_at>
+    <favourites_count>26</favourites_count>
+    <utc_offset/>
+    <time_zone/>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme9/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>2599</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:18 +0000 2010</created_at>
+  <id>15007764000</id>
+  <text>Road sodas :) http://tweetphoto.com/24627509</text>
+  <source>&lt;a href="http://ubertwitter.com" rel="nofollow"&gt;UberTwitter&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>16322863</id>
+    <name>HeardREI</name>
+    <screen_name>HeardREI</screen_name>
+    <location>Georgia</location>
+    <description>Name:Reina,3 degrees:Business Administration/Econ,Public Relations, Master of Science in Leadership.Now working on my Ph.D in Psychology!</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/787409701/rei1_normal.jpg</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>182</followers_count>
+    <profile_background_color>FF6699</profile_background_color>
+    <profile_text_color>362720</profile_text_color>
+    <profile_link_color>f2ea3a</profile_link_color>
+    <profile_sidebar_fill_color>E5507E</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>CC3366</profile_sidebar_border_color>
+    <friends_count>397</friends_count>
+    <created_at>Wed Sep 17 03:07:06 +0000 2008</created_at>
+    <favourites_count>0</favourites_count>
+    <utc_offset>-18000</utc_offset>
+    <time_zone>Eastern Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/70594212/DSC04739.JPG</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>2425</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:13 +0000 2010</created_at>
+  <id>15007760000</id>
+  <text>Just got my eyebrows threaded...i forgot how much that crap hurts compared to waxing</text>
+  <source>&lt;a href="/devices" rel="nofollow"&gt;txt&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>74595984</id>
+    <name>taylor robinson</name>
+    <screen_name>Taybaybay4</screen_name>
+    <location>p_town</location>
+    <description>haha you know me! diamondback 4 life</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/444160016/taybaybay_normal.jpg</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>32</followers_count>
+    <profile_background_color>000000</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>ff0090</profile_link_color>
+    <profile_sidebar_fill_color>000000</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>000000</profile_sidebar_border_color>
+    <friends_count>14</friends_count>
+    <created_at>Tue Sep 15 23:53:06 +0000 2009</created_at>
+    <favourites_count>1</favourites_count>
+    <utc_offset>-32400</utc_offset>
+    <time_zone>Alaska</time_zone>
+    <profile_background_image_url>http://a3.twimg.com/profile_background_images/41293963/dots__.br.jpg</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>2737</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:12 +0000 2010</created_at>
+  <id>15007759000</id>
+  <text>RT @portrait23: One more unfollower===&amp;gt;@innBloom &amp;lt;smh #damnshame</text>
+  <source>&lt;a href="http://ubertwitter.com" rel="nofollow"&gt;UberTwitter&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>28163598</id>
+    <name>Miss Lady Q. Johnson</name>
+    <screen_name>QueenBorne9</screen_name>
+    <location>ÜT: 40.686027,-73.76704</location>
+    <description>Complicated, simple, highly intelligent and sarcastic as hell.</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/930692380/109816998_normal.jpg</profile_image_url>
+    <url>http://tweetphoto.com/user/972361</url>
+    <protected>false</protected>
+    <followers_count>1401</followers_count>
+    <profile_background_color>0a0401</profile_background_color>
+    <profile_text_color>0e35f5</profile_text_color>
+    <profile_link_color>0a0909</profile_link_color>
+    <profile_sidebar_fill_color>dbd0d4</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>c90202</profile_sidebar_border_color>
+    <friends_count>1361</friends_count>
+    <created_at>Wed Apr 01 18:38:14 +0000 2009</created_at>
+    <favourites_count>110</favourites_count>
+    <utc_offset>-18000</utc_offset>
+    <time_zone>Eastern Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/79602114/GmasRose2.jpg</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>46598</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:10 +0000 2010</created_at>
+  <id>15007758000</id>
+  <text>ALEX MANDAME SALUDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOS !! TEAMOOOOO! :d (@speitzeroficial live on http://twitcam.com/tmoe))</text>
+  <source>&lt;a href="http://apiwiki.twitter.com/" rel="nofollow"&gt;API&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>109114456</id>
+    <name>Mari Carmen </name>
+    <screen_name>Magykc</screen_name>
+    <location>Crazy land</location>
+    <description>soii muii liinda 
+ztoii bn pinch fumada 
+jeje ♥I LOVE ME♥</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/866514626/Happy0700_normal.jpg</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>24</followers_count>
+    <profile_background_color>e31d76</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>254ec7</profile_link_color>
+    <profile_sidebar_fill_color>ff0558</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>ff0d4a</profile_sidebar_border_color>
+    <friends_count>213</friends_count>
+    <created_at>Thu Jan 28 01:02:37 +0000 2010</created_at>
+    <favourites_count>3</favourites_count>
+    <utc_offset/>
+    <time_zone/>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/80836420/colores.jpg</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>897</statuses_count>
+    <lang>es</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:08 +0000 2010</created_at>
+  <id>15007756000</id>
+  <text>#MUNDIAL "Si Palermo es habilidoso yo soy malabarista"</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>83685648</id>
+    <name>NESTOR ARIEL</name>
+    <screen_name>NESTOR_ARIEL</screen_name>
+    <location>Monte Grande, Buenos Aires</location>
+    <description>Amo la expresión, no puedo parar de hacerlo!!!. También me gusta escuchar, lo aprendo cada día más y es hermoso. Amo el arte de la conversación!!!</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/505429704/m_db3c052c1ece4970baf0a67b95150757_normal.jpg</profile_image_url>
+    <url>http://tuexpresasyoexpreso.blogspot.com/</url>
+    <protected>false</protected>
+    <followers_count>15</followers_count>
+    <profile_background_color>FFF04D</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>0099CC</profile_link_color>
+    <profile_sidebar_fill_color>f6ffd1</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>fff8ad</profile_sidebar_border_color>
+    <friends_count>17</friends_count>
+    <created_at>Mon Oct 19 20:49:29 +0000 2009</created_at>
+    <favourites_count>1</favourites_count>
+    <utc_offset>-10800</utc_offset>
+    <time_zone>Buenos Aires</time_zone>
+    <profile_background_image_url>http://a3.twimg.com/profile_background_images/99861997/rosa.jpg</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>514</statuses_count>
+    <lang>es</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:06 +0000 2010</created_at>
+  <id>15007755000</id>
+  <text>830 n my night iz jus about done.... Sleepy as hell so I'm turnin it in early latta twitter-nation</text>
+  <source>&lt;a href="http://ubertwitter.com" rel="nofollow"&gt;UberTwitter&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>131211884</id>
+    <name>Its me</name>
+    <screen_name>TheReal_W1nner</screen_name>
+    <location>ÜT: 36.7992,-76.003899</location>
+    <description>Yea on my twitter grind HHEEAAVVYY... I fukz wit my team #teamfollowback ... Llleettttzzz ggoooo #teamblackberry in the buildin pin:24b15e5a </description>
+    <profile_image_url>http://a3.twimg.com/profile_images/913144683/IMG00145-20100519-1051_normal.jpg</profile_image_url>
+    <url>http://null</url>
+    <protected>false</protected>
+    <followers_count>1012</followers_count>
+    <profile_background_color>9ae4e8</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>0000ff</profile_link_color>
+    <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
+    <friends_count>1039</friends_count>
+    <created_at>Fri Apr 09 16:15:31 +0000 2010</created_at>
+    <favourites_count>0</favourites_count>
+    <utc_offset/>
+    <time_zone/>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme1/bg.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>1429</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:04 +0000 2010</created_at>
+  <id>15007753000</id>
+  <text>Done and done. Show went so well! The crowd was awesome. Had 2 head home early but we'll be back w/Toby next week in Baltimore.</text>
+  <source>&lt;a href="http://itunes.apple.com/app/twitter/id333903271?mt=8" rel="nofollow"&gt;Twitter for iPhone&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>15972949</id>
+    <name>Carter's Chord</name>
+    <screen_name>CartersChord</screen_name>
+    <location>Nashville, TN</location>
+    <description>recording artists makin' music you should hear</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/615208191/19548_239204716217_7475971217_3779790_317186_n_normal.jpg</profile_image_url>
+    <url>http://carterschord.com</url>
+    <protected>false</protected>
+    <followers_count>836</followers_count>
+    <profile_background_color>fbebd2</profile_background_color>
+    <profile_text_color>919191</profile_text_color>
+    <profile_link_color>dd002c</profile_link_color>
+    <profile_sidebar_fill_color>3c193f</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>36173f</profile_sidebar_border_color>
+    <friends_count>80</friends_count>
+    <created_at>Sun Aug 24 21:33:33 +0000 2008</created_at>
+    <favourites_count>1</favourites_count>
+    <utc_offset>-21600</utc_offset>
+    <time_zone>Central Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme8/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>744</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:02 +0000 2010</created_at>
+  <id>15007752000</id>
+  <text>http://dld.bz/dGt5 Does self-checkout actually save you any money?</text>
+  <source>&lt;a href="http://www.socialoomph.com" rel="nofollow"&gt;SocialOomph&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>141693017</id>
+    <name>CodyNew</name>
+    <screen_name>CodyWrites2</screen_name>
+    <location/>
+    <description/>
+    <profile_image_url>http://s.twimg.com/a/1274144130/images/default_profile_4_normal.png</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>225</followers_count>
+    <profile_background_color>9ae4e8</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>0000ff</profile_link_color>
+    <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
+    <friends_count>234</friends_count>
+    <created_at>Sat May 08 19:23:26 +0000 2010</created_at>
+    <favourites_count>0</favourites_count>
+    <utc_offset/>
+    <time_zone/>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme1/bg.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>4815</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 00:31:01 +0000 2010</created_at>
+  <id>15007751000</id>
+  <text>Who tryna do something...I'm bored.lol</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>140059643</id>
+    <name>Greg Mandall</name>
+    <screen_name>cizinevyxul</screen_name>
+    <location>Brissy</location>
+    <description>Guitarist for Autumn Heartache D</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/941686188/GHTNKx_normal.jpg</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>15</followers_count>
+    <profile_background_color>9ae4e8</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>0000ff</profile_link_color>
+    <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
+    <friends_count>85</friends_count>
+    <created_at>Tue May 04 13:05:41 +0000 2010</created_at>
+    <favourites_count>0</favourites_count>
+    <utc_offset/>
+    <time_zone/>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme1/bg.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications/>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following/>
+    <statuses_count>28</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+</statuses>

+ 7 - 0
tests/Zend/Service/Twitter/_files/rate_limit_status.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hash>
+  <remaining-hits type="integer">150</remaining-hits>
+  <reset-time type="datetime">2010-05-30T12:38:56+00:00</reset-time>
+  <hourly-limit type="integer">150</hourly-limit>
+  <reset-time-in-seconds type="integer">1275223136</reset-time-in-seconds>
+</hash>

+ 868 - 0
tests/Zend/Service/Twitter/_files/statuses.friends_timeline.page.xml

@@ -0,0 +1,868 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<statuses type="array">
+<status>
+  <created_at>Sun May 30 11:41:27 +0000 2010</created_at>
+  <id>15036090677</id>
+  <text>Walking into Ormskirk to stop muscles seizing up and procure quality meats for @stedaniels' BBQ.</text>
+  <source>&lt;a href="http://itunes.apple.com/app/twitter/id333903271?mt=8" rel="nofollow"&gt;Twitter for iPhone&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>6102302</id>
+    <name>Michael Nolan</name>
+    <screen_name>MikeNolan</screen_name>
+    <location>Ormskirk, United Kingdom</location>
+    <description>Head of Web Services at Edge Hill University: http://blogs.edgehill.ac.uk/webservices/</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/18020682/mikenolan_normal.jpg</profile_image_url>
+    <url>http://www.michaelnolan.co.uk/</url>
+    <protected>false</protected>
+    <followers_count>925</followers_count>
+    <profile_background_color>0099B9</profile_background_color>
+    <profile_text_color>3C3940</profile_text_color>
+    <profile_link_color>0099B9</profile_link_color>
+    <profile_sidebar_fill_color>95E8EC</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>5ED4DC</profile_sidebar_border_color>
+    <friends_count>904</friends_count>
+    <created_at>Thu May 17 10:45:30 +0000 2007</created_at>
+    <favourites_count>530</favourites_count>
+    <utc_offset>0</utc_offset>
+    <time_zone>London</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme4/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>4453</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo xmlns:georss="http://www.georss.org/georss">
+    <georss:point>53.55929512 -2.89619275</georss:point>
+  </geo>
+  <coordinates xmlns:georss="http://www.georss.org/georss">
+    <georss:point>53.55929512 -2.89619275</georss:point>
+  </coordinates>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:41:16 +0000 2010</created_at>
+  <id>15036083865</id>
+  <text>Donald Clarke to Rachel English about SATC: "It's filth".</text>
+  <source>&lt;a href="http://seesmic.com/app" rel="nofollow"&gt;Seesmic Web&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>14395202</id>
+    <name>Christine Bohan</name>
+    <screen_name>ChristineBohan</screen_name>
+    <location>Dublin</location>
+    <description>Journalist, politics addict and occasional venturer into the outside world</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/546573125/profilepic_normal.jpg</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>1198</followers_count>
+    <profile_background_color>0099B9</profile_background_color>
+    <profile_text_color>3C3940</profile_text_color>
+    <profile_link_color>0099B9</profile_link_color>
+    <profile_sidebar_fill_color>95E8EC</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>5ED4DC</profile_sidebar_border_color>
+    <friends_count>1105</friends_count>
+    <created_at>Tue Apr 15 10:39:49 +0000 2008</created_at>
+    <favourites_count>715</favourites_count>
+    <utc_offset>0</utc_offset>
+    <time_zone>Dublin</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme4/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>true</following>
+    <statuses_count>10589</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:40:53 +0000 2010</created_at>
+  <id>15036069608</id>
+  <text>I would appreciate the outside world more if there wasn't so much repulsive incense smoke out my front door all the time.</text>
+  <source>&lt;a href="http://itunes.apple.com/app/twitter/id333903271?mt=8" rel="nofollow"&gt;Twitter for iPhone&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>8599212</id>
+    <name>Daniel Tan</name>
+    <screen_name>BoltClock</screen_name>
+    <location>Singapore</location>
+    <description>I'm a teen freelance web developer who enjoys hacking PHP code on his Windows 7 PC (no Mac, sadly). I adore math, green, Jesus, Apple and pi, but not apple pie!</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/800400621/iBolt_normal.gif</profile_image_url>
+    <url>http://NOVALISTIC.com</url>
+    <protected>false</protected>
+    <followers_count>1245</followers_count>
+    <profile_background_color>131516</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>a73fc4</profile_link_color>
+    <profile_sidebar_fill_color>efefef</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>eeeeee</profile_sidebar_border_color>
+    <friends_count>926</friends_count>
+    <created_at>Sun Sep 02 02:12:25 +0000 2007</created_at>
+    <favourites_count>272</favourites_count>
+    <utc_offset>28800</utc_offset>
+    <time_zone>Singapore</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274834447/images/themes/theme14/bg.gif</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>40584</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:34:20 +0000 2010</created_at>
+  <id>15035819642</id>
+  <text>Restarting my PC. After restarting I'll only open Firefox, Pidgin, iTunes and Flash.</text>
+  <source>&lt;a href="http://itunes.apple.com/app/twitter/id333903271?mt=8" rel="nofollow"&gt;Twitter for iPhone&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>8599212</id>
+    <name>Daniel Tan</name>
+    <screen_name>BoltClock</screen_name>
+    <location>Singapore</location>
+    <description>I'm a teen freelance web developer who enjoys hacking PHP code on his Windows 7 PC (no Mac, sadly). I adore math, green, Jesus, Apple and pi, but not apple pie!</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/800400621/iBolt_normal.gif</profile_image_url>
+    <url>http://NOVALISTIC.com</url>
+    <protected>false</protected>
+    <followers_count>1245</followers_count>
+    <profile_background_color>131516</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>a73fc4</profile_link_color>
+    <profile_sidebar_fill_color>efefef</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>eeeeee</profile_sidebar_border_color>
+    <friends_count>926</friends_count>
+    <created_at>Sun Sep 02 02:12:25 +0000 2007</created_at>
+    <favourites_count>272</favourites_count>
+    <utc_offset>28800</utc_offset>
+    <time_zone>Singapore</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274834447/images/themes/theme14/bg.gif</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>40583</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:27:23 +0000 2010</created_at>
+  <id>15035558502</id>
+  <text>OMG LEMMINGS! AWESOME!! RT: @Swizec: DHTML Lemmings primer  http://laz.ly/ao</text>
+  <source>&lt;a href="http://www.echofon.com/" rel="nofollow"&gt;Echofon&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>12744542</id>
+    <name>Robert Basic</name>
+    <screen_name>robertbasic</screen_name>
+    <location>Serbia</location>
+    <description>For those about to code - I salute you.</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/630933128/twitterProfilePhoto.jpg_normal.png</profile_image_url>
+    <url>http://robertbasic.com</url>
+    <protected>false</protected>
+    <followers_count>1005</followers_count>
+    <profile_background_color>161D32</profile_background_color>
+    <profile_text_color>6B7287</profile_text_color>
+    <profile_link_color>0000FF</profile_link_color>
+    <profile_sidebar_fill_color>FDF08D</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>000000</profile_sidebar_border_color>
+    <friends_count>372</friends_count>
+    <created_at>Sun Jan 27 09:29:10 +0000 2008</created_at>
+    <favourites_count>25</favourites_count>
+    <utc_offset>3600</utc_offset>
+    <time_zone>Belgrade</time_zone>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/3156960/header.jpg</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>true</following>
+    <statuses_count>15232</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:20:42 +0000 2010</created_at>
+  <id>15035315794</id>
+  <text>#php manual with the new #windows help system, multitab, better index, multi books #awesome http://yfrog.com/4oze2p</text>
+  <source>&lt;a href="http://www.tweetdeck.com" rel="nofollow"&gt;TweetDeck&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>13208432</id>
+    <name>PierreJoye</name>
+    <screen_name>PierreJoye</screen_name>
+    <location>Germany</location>
+    <description/>
+    <profile_image_url>http://a3.twimg.com/profile_images/355026753/Pierre_Joye_2_normal.jpg</profile_image_url>
+    <url>http://blog.thepimp.net</url>
+    <protected>false</protected>
+    <followers_count>461</followers_count>
+    <profile_background_color>2E191F</profile_background_color>
+    <profile_text_color>38292D</profile_text_color>
+    <profile_link_color>785740</profile_link_color>
+    <profile_sidebar_fill_color>E0FFF6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>E1F9FF</profile_sidebar_border_color>
+    <friends_count>145</friends_count>
+    <created_at>Thu Feb 07 15:50:33 +0000 2008</created_at>
+    <favourites_count>12</favourites_count>
+    <utc_offset>3600</utc_offset>
+    <time_zone>Berlin</time_zone>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/59174166/xc6c874ea69888a0e2519f22776e1142.jpg</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>5072</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:19:07 +0000 2010</created_at>
+  <id>15035258134</id>
+  <text>RT @DJ_RichEars Orbital announce plans to release their first material in six years http://dlvr.it/1JZG4 (via @NMEmagazine) /via @bobrusche</text>
+  <source>&lt;a href="http://itunes.apple.com/app/twitter/id333903271?mt=8" rel="nofollow"&gt;Twitter for iPhone&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>1524641</id>
+    <name>Stefan</name>
+    <screen_name>skoop</screen_name>
+    <location>Woudenberg, Netherlands</location>
+    <description>open source, php, geek, music, symfony, buzzer, dad, conference speaker, vegetarian, fc utrecht, entrepreneur, freelancer</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/921970573/5d3c68fa-7d96-4f95-8f26-7c6d47496cd7_normal.png</profile_image_url>
+    <url>http://www.leftontheweb.com/</url>
+    <protected>false</protected>
+    <followers_count>1283</followers_count>
+    <profile_background_color>000000</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>323232</profile_link_color>
+    <profile_sidebar_fill_color>999999</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>CDCDCD</profile_sidebar_border_color>
+    <friends_count>1492</friends_count>
+    <created_at>Mon Mar 19 16:28:14 +0000 2007</created_at>
+    <favourites_count>31</favourites_count>
+    <utc_offset>3600</utc_offset>
+    <time_zone>Amsterdam</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme1/bg.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>25591</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:18:34 +0000 2010</created_at>
+  <id>15035238297</id>
+  <text>Twitter is very sedate and polite this morning. Not a scandal in sight...</text>
+  <source>&lt;a href="http://www.tweetdeck.com" rel="nofollow"&gt;TweetDeck&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>4996631</id>
+    <name>Evert Bopp</name>
+    <screen_name>EvertB</screen_name>
+    <location>Tipperary, Ireland</location>
+    <description>www.haiti-connect.org
+Airappz.com Greenhouselimerick.com
+- WiFi know-it-all, Anarcho-capitalist, entrepreneur, part-time blogger. </description>
+    <profile_image_url>http://a3.twimg.com/profile_images/922279239/Avatar_normal.jpg</profile_image_url>
+    <url>http://evertb.wordpress.com/</url>
+    <protected>false</protected>
+    <followers_count>3231</followers_count>
+    <profile_background_color>9ae4e8</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>0000ff</profile_link_color>
+    <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
+    <friends_count>3216</friends_count>
+    <created_at>Tue Apr 17 13:31:18 +0000 2007</created_at>
+    <favourites_count>410</favourites_count>
+    <utc_offset>0</utc_offset>
+    <time_zone>Dublin</time_zone>
+    <profile_background_image_url>http://a3.twimg.com/profile_background_images/12559391/pattern8-pattern-11c.png</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>52988</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:18:14 +0000 2010</created_at>
+  <id>15035226350</id>
+  <text>Tee time at TPC Deere Run in T-90</text>
+  <source>&lt;a href="http://www.tweetdeck.com/" rel="nofollow"&gt;TweetDeck&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>786947</id>
+    <name>Dave Bost</name>
+    <screen_name>davebost</screen_name>
+    <location>St. Charles, IL</location>
+    <description>Microsoft Developer Evangelist and co-host of the Thirsty Developer podcast</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/457859622/dbost_normal.jpg</profile_image_url>
+    <url>http://www.davebost.com/blog</url>
+    <protected>false</protected>
+    <followers_count>1022</followers_count>
+    <profile_background_color>9ae4e8</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>0000ff</profile_link_color>
+    <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
+    <friends_count>814</friends_count>
+    <created_at>Wed Feb 21 18:53:52 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-21600</utc_offset>
+    <time_zone>Central Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme1/bg.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>true</following>
+    <statuses_count>3562</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:17:34 +0000 2010</created_at>
+  <id>15035201322</id>
+  <text>Did I really subject my PC to so many installations of VS-related stuff (look at that scrollbar)?! http://twitpic.com/1sfyjx</text>
+  <source>&lt;a href="http://twitpic.com" rel="nofollow"&gt;Twitpic&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>8599212</id>
+    <name>Daniel Tan</name>
+    <screen_name>BoltClock</screen_name>
+    <location>Singapore</location>
+    <description>I'm a teen freelance web developer who enjoys hacking PHP code on his Windows 7 PC (no Mac, sadly). I adore math, green, Jesus, Apple and pi, but not apple pie!</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/800400621/iBolt_normal.gif</profile_image_url>
+    <url>http://NOVALISTIC.com</url>
+    <protected>false</protected>
+    <followers_count>1245</followers_count>
+    <profile_background_color>131516</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>a73fc4</profile_link_color>
+    <profile_sidebar_fill_color>efefef</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>eeeeee</profile_sidebar_border_color>
+    <friends_count>926</friends_count>
+    <created_at>Sun Sep 02 02:12:25 +0000 2007</created_at>
+    <favourites_count>272</favourites_count>
+    <utc_offset>28800</utc_offset>
+    <time_zone>Singapore</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274834447/images/themes/theme14/bg.gif</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>true</following>
+    <statuses_count>40581</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:14:18 +0000 2010</created_at>
+  <id>15035082401</id>
+  <text>test - mas att</text>
+  <source>&lt;a href="http://apiwiki.twitter.com/" rel="nofollow"&gt;API&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>813670</id>
+    <name>BrianGreene.com</name>
+    <screen_name>BrianGreene</screen_name>
+    <location>Dublin</location>
+    <description>news music spectrum politics life &amp; word play in 140 chunks</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/799736341/r26580khz_normal.jpg</profile_image_url>
+    <url>http://url.ie/BHG</url>
+    <protected>false</protected>
+    <followers_count>1245</followers_count>
+    <profile_background_color>FFFFFF</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>0000ff</profile_link_color>
+    <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>87BC44</profile_sidebar_border_color>
+    <friends_count>405</friends_count>
+    <created_at>Tue Mar 06 01:25:53 +0000 2007</created_at>
+    <favourites_count>5</favourites_count>
+    <utc_offset>0</utc_offset>
+    <time_zone>Dublin</time_zone>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/20336474/12042008131.jpg</profile_background_image_url>
+    <profile_background_tile>true</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>true</following>
+    <statuses_count>14941</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:13:03 +0000 2010</created_at>
+  <id>15035038313</id>
+  <text>More people should use Jabber instead of the common IM #opensource #secure http://bit.ly/aw45qe</text>
+  <source>&lt;a href="http://twitterfeed.com" rel="nofollow"&gt;twitterfeed&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>54631433</id>
+    <name>FOSSwiki</name>
+    <screen_name>FOSSwiki</screen_name>
+    <location>San Francisco</location>
+    <description>Automated aggregator of all things #opensource. Managed by @Jay_Nath. Enjoy!</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/302423400/boxee_normal.jpg</profile_image_url>
+    <url>http://www.jaynath.com</url>
+    <protected>false</protected>
+    <followers_count>6171</followers_count>
+    <profile_background_color>9AE4E8</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>0084B4</profile_link_color>
+    <profile_sidebar_fill_color>DDFFCC</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>BDDCAD</profile_sidebar_border_color>
+    <friends_count>6686</friends_count>
+    <created_at>Tue Jul 07 18:19:54 +0000 2009</created_at>
+    <favourites_count>0</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/24312392/twitter_san_francisco-1.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>true</following>
+    <statuses_count>51617</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:13:03 +0000 2010</created_at>
+  <id>15035037848</id>
+  <text>Just submitted my article "When Open Source meets Education" for #InitMag June issue. #OpenSource #Education http://bit.ly/bv4ROt</text>
+  <source>&lt;a href="http://twitterfeed.com" rel="nofollow"&gt;twitterfeed&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>54631433</id>
+    <name>FOSSwiki</name>
+    <screen_name>FOSSwiki</screen_name>
+    <location>San Francisco</location>
+    <description>Automated aggregator of all things #opensource. Managed by @Jay_Nath. Enjoy!</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/302423400/boxee_normal.jpg</profile_image_url>
+    <url>http://www.jaynath.com</url>
+    <protected>false</protected>
+    <followers_count>6171</followers_count>
+    <profile_background_color>9AE4E8</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>0084B4</profile_link_color>
+    <profile_sidebar_fill_color>DDFFCC</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>BDDCAD</profile_sidebar_border_color>
+    <friends_count>6686</friends_count>
+    <created_at>Tue Jul 07 18:19:54 +0000 2009</created_at>
+    <favourites_count>0</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/24312392/twitter_san_francisco-1.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>true</following>
+    <statuses_count>51617</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:11:33 +0000 2010</created_at>
+  <id>15034985239</id>
+  <text>#anzeige Finally a project management tool that both your engineers AND your business people will like! Check out Planio http://j.mp/90wF49</text>
+  <source>&lt;a href="http://be-a-magpie.com/twitterers/disclosure-statement" rel="nofollow"&gt;Magpie Advertising Network&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>13596092</id>
+    <name>Dennis Winter</name>
+    <screen_name>d_winter</screen_name>
+    <location>Geldern/Germany</location>
+    <description>Freelancing web developer and student from Germany!</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/897202586/DSCF4271_normal.jpg</profile_image_url>
+    <url>http://blog.4expressions.com</url>
+    <protected>false</protected>
+    <followers_count>269</followers_count>
+    <profile_background_color>352726</profile_background_color>
+    <profile_text_color>352726</profile_text_color>
+    <profile_link_color>666666</profile_link_color>
+    <profile_sidebar_fill_color>99CC33</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>352726</profile_sidebar_border_color>
+    <friends_count>436</friends_count>
+    <created_at>Sun Feb 17 20:41:26 +0000 2008</created_at>
+    <favourites_count>4</favourites_count>
+    <utc_offset>3600</utc_offset>
+    <time_zone>Berlin</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274834447/images/themes/theme5/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>true</following>
+    <statuses_count>1639</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:05:38 +0000 2010</created_at>
+  <id>15034774667</id>
+  <text>Omg the big bang episode with the flashback is the best ever.</text>
+  <source>&lt;a href="http://itunes.apple.com/app/twitter/id333903271?mt=8" rel="nofollow"&gt;Twitter for iPhone&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>11853742</id>
+    <name>Ivo Jansch</name>
+    <screen_name>ijansch</screen_name>
+    <location>Netherlands</location>
+    <description>CTO of Ibuildings, PHP Evangelist, Writer, Blogger</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/276839523/ivo_normal.png</profile_image_url>
+    <url>http://www.jansch.nl</url>
+    <protected>false</protected>
+    <followers_count>847</followers_count>
+    <profile_background_color>9ae4e8</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>0000ff</profile_link_color>
+    <profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
+    <friends_count>268</friends_count>
+    <created_at>Fri Jan 04 21:04:42 +0000 2008</created_at>
+    <favourites_count>1</favourites_count>
+    <utc_offset>3600</utc_offset>
+    <time_zone>Amsterdam</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme1/bg.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>4540</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:05:33 +0000 2010</created_at>
+  <id>15034771446</id>
+  <text>It's going to be quite a hot, humid day. 83% humidity right now, with the temp expected in the 90's.</text>
+  <source>&lt;a href="http://itunes.apple.com/app/twitter/id333903271?mt=8" rel="nofollow"&gt;Twitter for iPhone&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>14993209</id>
+    <name>Brandon Savage</name>
+    <screen_name>brandonsavage</screen_name>
+    <location/>
+    <description/>
+    <profile_image_url>http://a3.twimg.com/profile_images/859024571/brandon_normal.jpg</profile_image_url>
+    <url/>
+    <protected>false</protected>
+    <followers_count>752</followers_count>
+    <profile_background_color>C0DEED</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>0084B4</profile_link_color>
+    <profile_sidebar_fill_color>DDEEF6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>C0DEED</profile_sidebar_border_color>
+    <friends_count>152</friends_count>
+    <created_at>Tue Jun 03 14:28:21 +0000 2008</created_at>
+    <favourites_count>3</favourites_count>
+    <utc_offset>-18000</utc_offset>
+    <time_zone>Eastern Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1273875281/images/themes/theme1/bg.png</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>12028</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 11:01:23 +0000 2010</created_at>
+  <id>15034618617</id>
+  <text>looking for a wordpress plugin that allows one to manage "premium content" (including susbcription mgmt, payment, etc etc)</text>
+  <source>&lt;a href="http://www.seesmic.com/" rel="nofollow"&gt;Seesmic&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>50043</id>
+    <name>Stephanie Booth</name>
+    <screen_name>stephtara</screen_name>
+    <location>Lausanne</location>
+    <description>Anglo-Swiss, online strategy consultant. Loves her Indian cat @bagha, does judo, and tries to sing. Chatty. Works at @eclau.</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/799159333/Photo_278_normal.jpg</profile_image_url>
+    <url>http://climbtothestars.org</url>
+    <protected>false</protected>
+    <followers_count>3043</followers_count>
+    <profile_background_color>9ae4e8</profile_background_color>
+    <profile_text_color>000000</profile_text_color>
+    <profile_link_color>B41E6B</profile_link_color>
+    <profile_sidebar_fill_color>FFE3FB</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>B41E6B</profile_sidebar_border_color>
+    <friends_count>718</friends_count>
+    <created_at>Fri Dec 08 09:25:46 +0000 2006</created_at>
+    <favourites_count>847</favourites_count>
+    <utc_offset>3600</utc_offset>
+    <time_zone>Bern</time_zone>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/735262/IMG_1416.jpg</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>17541</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 10:58:56 +0000 2010</created_at>
+  <id>15034522004</id>
+  <text>Now time to sort out interwebs... new house has none, old one has a broken one. 3g stick or tethering is in my future!</text>
+  <source>&lt;a href="http://tweetsride.com/" rel="nofollow"&gt;TweetsRide&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>11924252</id>
+    <name>Helgi Þormar Þ.</name>
+    <screen_name>h</screen_name>
+    <location>London, United Kingdom</location>
+    <description>Party person, programmer, echolibre person etc etc</description>
+    <profile_image_url>http://a3.twimg.com/profile_images/609089633/Photo_on_2009-10-25_at_13.27_2_normal.jpg</profile_image_url>
+    <url>http://www.helgi.ws</url>
+    <protected>false</protected>
+    <followers_count>1429</followers_count>
+    <profile_background_color>352726</profile_background_color>
+    <profile_text_color>3E4415</profile_text_color>
+    <profile_link_color>D02B55</profile_link_color>
+    <profile_sidebar_fill_color>99CC33</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>829D5E</profile_sidebar_border_color>
+    <friends_count>201</friends_count>
+    <created_at>Mon Jan 07 01:17:28 +0000 2008</created_at>
+    <favourites_count>5</favourites_count>
+    <utc_offset>0</utc_offset>
+    <time_zone>London</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme5/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>true</following>
+    <statuses_count>5406</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Sun May 30 10:56:55 +0000 2010</created_at>
+  <id>15034450756</id>
+  <text>Hills always make me think the ride is longer than it is so I'm early for brunch with @samkabam and @elliotjaystocks. Have iPad will read.</text>
+  <source>&lt;a href="http://itunes.apple.com/app/twitter/id333903271?mt=8" rel="nofollow"&gt;Twitter for iPhone&lt;/a&gt;</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>7629722</id>
+    <name>Jon Tan 陳</name>
+    <screen_name>jontangerine</screen_name>
+    <location>Bristol, UK</location>
+    <description>Designer. Web typographer. Founding member of @analogcoop. Co-founder of @fontdeck.</description>
+    <profile_image_url>http://a1.twimg.com/profile_images/897611884/205-bg-fff_normal.jpg</profile_image_url>
+    <url>http://analog.coop/</url>
+    <protected>false</protected>
+    <followers_count>2512</followers_count>
+    <profile_background_color>d8dccc</profile_background_color>
+    <profile_text_color>5e5f63</profile_text_color>
+    <profile_link_color>000000</profile_link_color>
+    <profile_sidebar_fill_color>eff2e6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>f5f5f5</profile_sidebar_border_color>
+    <friends_count>97</friends_count>
+    <created_at>Sat Jul 21 21:19:52 +0000 2007</created_at>
+    <favourites_count>6</favourites_count>
+    <utc_offset>0</utc_offset>
+    <time_zone>London</time_zone>
+    <profile_background_image_url>http://a1.twimg.com/profile_background_images/83974308/bg-twitter-gradient.jpg</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>true</geo_enabled>
+    <verified>false</verified>
+    <following>false</following>
+    <statuses_count>4321</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>false</contributors_enabled>
+  </user>
+  <geo xmlns:georss="http://www.georss.org/georss">
+    <georss:point>51.45556062 -2.6039173</georss:point>
+  </geo>
+  <coordinates xmlns:georss="http://www.georss.org/georss">
+    <georss:point>51.45556062 -2.6039173</georss:point>
+  </coordinates>
+  <place/>
+  <contributors/>
+</status>
+</statuses>

+ 659 - 0
tests/Zend/Service/Twitter/_files/user_timeline.twitter.xml

@@ -0,0 +1,659 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<statuses type="array">
+<status>
+  <created_at>Fri May 28 21:14:05 +0000 2010</created_at>
+  <id>14932507266</id>
+  <text>Good news for people everywhere http://bit.ly/b1Cf9A</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3223630</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>247</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>745</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>16739704</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Mon May 24 16:02:43 +0000 2010</created_at>
+  <id>14632050758</id>
+  <text>The Twitter Platform: Enduring Value, Ecosystem Clarity, Fostering Innovation http://bit.ly/azilHc</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3210585</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>246</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>743</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>7694352</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Thu May 20 23:17:25 +0000 2010</created_at>
+  <id>14391164138</id>
+  <text>Feel free to keep the stories coming. You can also check out @cleveraccounts to learn about interesting examples from more clever folks.</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3196883</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>246</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>741</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors/>
+</status>
+<status>
+  <created_at>Thu May 20 22:59:49 +0000 2010</created_at>
+  <id>14390500918</id>
+  <text>Cool to hear all of your stories! Of course it's too hard to pick just one to retweet, so here are a few that stood out...</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3199005</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>246</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>741</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>16739704</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Thu May 20 21:39:43 +0000 2010</created_at>
+  <id>14386817576</id>
+  <text>Have you ever learned about something just in the nick of time because you checked Twitter? Share your story &amp; we'll retweet the best one!</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3196754</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>246</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>736</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>16739704</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Thu May 20 18:32:50 +0000 2010</created_at>
+  <id>14378412372</id>
+  <text>40cents a day = 2 lifesaving pills. http://bit.ly/93qPj3 Film premieres tonight on @hbo. Go @joinred!</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3227196</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>247</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>745</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>16739704</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Wed May 19 17:50:12 +0000 2010</created_at>
+  <id>14307539760</id>
+  <text>Twitter for iPhone now available in the iTunes App Store http://bit.ly/bu4gSu</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3205225</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>246</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>742</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>7694352</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Sun May 16 05:38:12 +0000 2010</created_at>
+  <id>14080930416</id>
+  <text>@justinbieber the TT tweak is nothing personal. It was long planned &amp; better shows what is emerging right now. See http://bit.ly/byhJ7M. Thx</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id>27260086</in_reply_to_user_id>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name>justinbieber</in_reply_to_screen_name>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3180216</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>236</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1273875281/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>733</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>822571</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Fri May 14 21:24:23 +0000 2010</created_at>
+  <id>13998259745</id>
+  <text>Curious about the recent changes to the Worldwide Trending Topic algorithm?  See: http://bit.ly/byhJ7M</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3223641</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>247</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>false</following>
+    <statuses_count>745</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>822571</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Thu May 13 19:09:31 +0000 2010</created_at>
+  <id>13929657914</id>
+  <text>It's bike-to-work day everyday when you're headquartered in San Francisco! @jointheflock</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3220708</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>247</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274739546/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>744</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>16739704</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Thu May 13 00:28:59 +0000 2010</created_at>
+  <id>13881748072</id>
+  <text>We have tweaked our worldwide trending topic algorithm to better capture the most emergent trends being talked about on Twitter *right now*</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3201215</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>246</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>742</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>822571</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Mon May 10 17:15:53 +0000 2010</created_at>
+  <id>13737532357</id>
+  <text>Follow bug discovered, remedied. Read our status blog for details. http://bit.ly/dhQ3fF</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3201215</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>246</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>742</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>16739704</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Mon May 10 17:02:18 +0000 2010</created_at>
+  <id>13736700173</id>
+  <text>Follow count display is set to 0 and follow/unfollow is temporarily offline while we fix a bug.</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3226158</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>247</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>745</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>13</user_id>
+  </contributors>
+</status>
+<status>
+  <created_at>Sat May 08 01:39:13 +0000 2010</created_at>
+  <id>13581872903</id>
+  <text>Enjoying 2 barrels of @fledgling wine that will pour 3000 generous glasses. We've got a lot to work to do tonight. Cheers @roomtoread!</text>
+  <source>web</source>
+  <truncated>false</truncated>
+  <in_reply_to_status_id/>
+  <in_reply_to_user_id/>
+  <favorited>false</favorited>
+  <in_reply_to_screen_name/>
+  <user>
+    <id>783214</id>
+    <name>Twitter</name>
+    <screen_name>twitter</screen_name>
+    <location>San Francisco, CA</location>
+    <description>Always wondering what's happening. </description>
+    <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+    <url>http://twitter.com</url>
+    <protected>false</protected>
+    <followers_count>3201330</followers_count>
+    <profile_background_color>ACDED6</profile_background_color>
+    <profile_text_color>333333</profile_text_color>
+    <profile_link_color>038543</profile_link_color>
+    <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+    <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+    <friends_count>246</friends_count>
+    <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+    <favourites_count>2</favourites_count>
+    <utc_offset>-28800</utc_offset>
+    <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+    <profile_background_image_url>http://s.twimg.com/a/1274144130/images/themes/theme18/bg.gif</profile_background_image_url>
+    <profile_background_tile>false</profile_background_tile>
+    <notifications>false</notifications>
+    <geo_enabled>false</geo_enabled>
+    <verified>true</verified>
+    <following>true</following>
+    <statuses_count>742</statuses_count>
+    <lang>en</lang>
+    <contributors_enabled>true</contributors_enabled>
+  </user>
+  <geo/>
+  <coordinates/>
+  <place/>
+  <contributors>
+    <user_id>16739704</user_id>
+  </contributors>
+</status>
+</statuses>

+ 48 - 0
tests/Zend/Service/Twitter/_files/users.show.twitter.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<user>
+  <id>783214</id>
+  <name>Twitter</name>
+  <screen_name>twitter</screen_name>
+  <location>San Francisco, CA</location>
+  <description>Always wondering what's happening. </description>
+  <profile_image_url>http://a1.twimg.com/profile_images/878669694/twitter_bird_normal.jpg</profile_image_url>
+  <url>http://twitter.com</url>
+  <protected>false</protected>
+  <followers_count>3227326</followers_count>
+  <profile_background_color>ACDED6</profile_background_color>
+  <profile_text_color>333333</profile_text_color>
+  <profile_link_color>038543</profile_link_color>
+  <profile_sidebar_fill_color>F6F6F6</profile_sidebar_fill_color>
+  <profile_sidebar_border_color>EEEEEE</profile_sidebar_border_color>
+  <friends_count>247</friends_count>
+  <created_at>Tue Feb 20 14:35:54 +0000 2007</created_at>
+  <favourites_count>2</favourites_count>
+  <utc_offset>-28800</utc_offset>
+  <time_zone>Pacific Time (US &amp; Canada)</time_zone>
+  <profile_background_image_url>http://s.twimg.com/a/1274899949/images/themes/theme18/bg.gif</profile_background_image_url>
+  <profile_background_tile>false</profile_background_tile>
+  <notifications/>
+  <geo_enabled>false</geo_enabled>
+  <verified>true</verified>
+  <following/>
+  <statuses_count>745</statuses_count>
+  <lang>en</lang>
+  <contributors_enabled>true</contributors_enabled>
+  <status>
+    <created_at>Fri May 28 21:14:05 +0000 2010</created_at>
+    <id>14932507266</id>
+    <text>Good news for people everywhere http://bit.ly/b1Cf9A</text>
+    <source>web</source>
+    <truncated>false</truncated>
+    <in_reply_to_status_id/>
+    <in_reply_to_user_id/>
+    <favorited>false</favorited>
+    <in_reply_to_screen_name/>
+    <geo/>
+    <coordinates/>
+    <place/>
+    <contributors>
+      <user_id>16739704</user_id>
+    </contributors>
+  </status>
+</user>