]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/TwitterBridge/lib/twittersitestream.php
plugins onAutoload now only overloads if necessary (extlibs etc.)
[quix0rs-gnu-social.git] / plugins / TwitterBridge / lib / twittersitestream.php
1 <?php
2 /**
3  * StatusNet, the distributed open-source microblogging tool
4  *
5  * PHP version 5
6  *
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.
11  *
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.
16  *
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/>.
19  *
20  * @category  Plugin
21  * @package   StatusNet
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/
26  */
27
28 /**
29  * Multiuser stream listener for Twitter Site Streams API
30  * http://dev.twitter.com/pages/site_streams
31  *
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
35  * connecting as.
36  *
37  * You'll need to be connecting with the auth keys for the user who
38  * owns the application registration.
39  *
40  * The user each message is destined for will be passed to event handlers
41  * in $context['for_user_id'].
42  */
43 class TwitterSiteStream extends TwitterStreamReader
44 {
45     protected $userIds;
46
47     public function __construct(TwitterOAuthClient $auth, $baseUrl='https://sitestream.twitter.com')
48     {
49         parent::__construct($auth, $baseUrl);
50     }
51
52     public function connect($method='2b/site.json')
53     {
54         $params = array();
55         if ($this->userIds) {
56             $params['follow'] = implode(',', $this->userIds);
57         }
58         return parent::connect($method, $params);
59     }
60
61     /**
62      * Set the users whose home streams should be pulled.
63      * They all must have valid oauth tokens for this application.
64      *
65      * Must be called before connect().
66      *
67      * @param array $userIds
68      */
69     function followUsers($userIds)
70     {
71         $this->userIds = $userIds;
72     }
73
74     /**
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.
77      *
78      * @param array $data
79      */
80     function routeMessage(stdClass $data)
81     {
82         $context = array(
83             'source' => 'sitestream',
84             'for_user' => $data->for_user
85         );
86         parent::handleMessage($data->message, $context);
87     }
88 }