CMS for the late garbage.fm
1<?php
2
3class Twitter {
4 static $TWITTER_HOST = "https://api.twitter.com";
5
6 static function oauth_consumer() {
7 if (!defined("TWITTER_CONSUMER_KEY") || !TWITTER_CONSUMER_KEY ||
8 !defined("TWITTER_CONSUMER_SECRET") || !TWITTER_CONSUMER_SECRET)
9 throw new Exception("TWITTER_CONSUMER_KEY and "
10 . "TWITTER_CONSUMER_SECRET must be defined");
11
12 $oauth = new OAuth(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET);
13 $oauth->enableDebug();
14 return $oauth;
15 }
16
17 static function new_request_token($callback = null) {
18 return Twitter::oauth_consumer()->getRequestToken(
19 static::$TWITTER_HOST . "/oauth/request_token", $callback);
20 }
21
22 static function new_authorize_url($token) {
23 return static::$TWITTER_HOST . "/oauth/authorize?oauth_token="
24 . $token;
25 }
26
27 static function oauth_request($req, $method = "GET", $post_data = array()) {
28 $settings = Settings::fetch();
29
30 $oauth_consumer = Twitter::oauth_consumer();
31 $oauth_consumer->setToken($settings->twitter_oauth_token,
32 $settings->twitter_oauth_secret);
33 $oauth_consumer->fetch(static::$TWITTER_HOST . $req, $post_data,
34 $method);
35
36 return $oauth_consumer->getLastResponse();
37 }
38
39 static function verify_oauth_credentials($token, $secret, $in_verifier) {
40 $consumer = Twitter::oauth_consumer();
41 $consumer->setToken($token, $secret);
42
43 $at = $consumer->getAccessToken(static::$TWITTER_HOST
44 . "/oauth/access_token", null, $in_verifier);
45
46 if (empty($at["screen_name"]))
47 throw new Exception("no access token returned");
48
49 $consumer->setToken($at["oauth_token"], $at["oauth_token_secret"]);
50 $consumer->fetch(static::$TWITTER_HOST
51 . "/1.1/account/verify_credentials.json");
52 $json = json_decode($consumer->getLastResponse(), true);
53
54 if (empty($json["screen_name"]))
55 throw new Exception("no screen name in json from verification?");
56
57 $settings = Settings::fetch();
58 $settings->twitter_oauth_token = $at["oauth_token"];
59 $settings->twitter_oauth_secret = $at["oauth_token_secret"];
60 $settings->save();
61
62 return true;
63 }
64}
65
66?>