3 * StatusNet, the distributed open-source microblogging tool
7 * LICENCE: This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
22 * @author Brion Vibber <brion@status.net>
23 * @copyright 2010 StatusNet, Inc.
24 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
25 * @link http://status.net/
29 * Multiuser stream listener for Twitter Site Streams API
30 * http://dev.twitter.com/pages/site_streams
32 * The site streams API allows listening to updates for multiple users.
33 * Pass in the user IDs to listen to in via followUser() -- note they
34 * must each have a valid OAuth token for the application ID we're
37 * You'll need to be connecting with the auth keys for the user who
38 * owns the application registration.
40 * The user each message is destined for will be passed to event handlers
41 * in $context['for_user_id'].
43 class TwitterSiteStream extends TwitterStreamReader
47 public function __construct(TwitterOAuthClient $auth, $baseUrl='https://sitestream.twitter.com')
49 parent::__construct($auth, $baseUrl);
52 public function connect($method='2b/site.json')
56 $params['follow'] = implode(',', $this->userIds);
58 return parent::connect($method, $params);
62 * Set the users whose home streams should be pulled.
63 * They all must have valid oauth tokens for this application.
65 * Must be called before connect().
67 * @param array $userIds
69 function followUsers($userIds)
71 $this->userIds = $userIds;
75 * Each message in the site stream tells us which user ID it should be
76 * routed to; we'll need that to let the caller know what to do.
80 function routeMessage(stdClass $data)
83 'source' => 'sitestream',
84 'for_user' => $data->for_user
86 parent::handleMessage($data->message, $context);