-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from miniplay/fix-namespace
Fix namespace + autoloading issue. Fix example.
- Loading branch information
Showing
2 changed files
with
43 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,21 +5,18 @@ | |
// written by Josh Fraser | joshfraser.com | [email protected] | ||
// Released under Apache License 2.0 | ||
|
||
include("subscriber.php"); | ||
include("./src/Subscriber.php"); | ||
|
||
$hub_url = "http://pubsubhubbub.appspot.com"; | ||
$callback_url = "put your own endpoint here"; | ||
|
||
$feed = "http://feeds.feedburner.com/onlineaspect"; | ||
|
||
// create a new subscriber | ||
$s = new Subscriber($hub_url, $callback_url); | ||
$s = new Pubsubhubbub\Subscriber\Subscriber($hub_url, $callback_url); | ||
|
||
// subscribe to a feed | ||
$s->subscribe($feed); | ||
|
||
// unsubscribe from a feed | ||
$s->unsubscribe($feed); | ||
|
||
?> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,77 +1,77 @@ | ||
<?php | ||
/** | ||
* A PHP client library for pubsubhubbub | ||
* | ||
* | ||
* @link http://code.google.com/p/pubsubhubbub/ | ||
* @author Josh Fraser | joshfraser.com | [email protected] | ||
* @license Apache License 2.0 | ||
*/ | ||
|
||
namespace pubsubhubbub/subscriber; | ||
namespace Pubsubhubbub\Subscriber; | ||
|
||
class Subscriber { | ||
/** | ||
* put your google key here | ||
* required if you want to use the google feed API to lookup RSS feeds | ||
* | ||
* | ||
* @var string | ||
*/ | ||
protected $google_key = ""; | ||
|
||
/** @var string */ | ||
protected $hub_url; | ||
|
||
/** @var string */ | ||
protected $callback_url; | ||
|
||
/** @var string */ | ||
protected $credentials; | ||
|
||
/** | ||
* @var string accepted values are "async" and "sync" | ||
*/ | ||
protected $verify = "async"; | ||
protected $verify = "async"; | ||
|
||
/** @var string */ | ||
protected $verify_token; | ||
|
||
/** @var int */ | ||
protected $lease_seconds; | ||
|
||
/** | ||
* create a new Subscriber (credentials added for SuperFeedr support) | ||
* | ||
* | ||
* @param string $hub_url | ||
* @param string $callback_url | ||
* @param string $credentials | ||
*/ | ||
public function __construct($hub_url, $callback_url, $credentials = false) { | ||
|
||
if (!isset($hub_url)) | ||
throw new Exception('Please specify a hub url'); | ||
if (!preg_match("|^https?://|i",$hub_url)) | ||
|
||
if (!preg_match("|^https?://|i",$hub_url)) | ||
throw new Exception('The specified hub url does not appear to be valid: '.$hub_url); | ||
|
||
if (!isset($callback_url)) | ||
throw new Exception('Please specify a callback'); | ||
|
||
$this->hub_url = $hub_url; | ||
$this->callback_url = $callback_url; | ||
$this->credentials = $credentials; | ||
} | ||
|
||
/** | ||
* $use_regexp lets you choose whether to use google AJAX feed api (faster, but cached) or a regexp to read from site | ||
* | ||
* | ||
* @param string $url | ||
* @param callable $http_function | ||
* @return string | ||
*/ | ||
public function find_feed($url, $http_function = false) { | ||
// using google feed API | ||
$url = "http://ajax.googleapis.com/ajax/services/feed/lookup?key={$this->google_key}&v=1.0&q=".urlencode($url); | ||
// fetch the content | ||
// fetch the content | ||
if ($http_function) | ||
$response = $http_function($url); | ||
else | ||
|
@@ -81,7 +81,7 @@ public function find_feed($url, $http_function = false) { | |
$rss_url = $result['responseData']['url']; | ||
return $rss_url; | ||
} | ||
|
||
/** | ||
* @param string $topic_url | ||
* @param callable $http_function | ||
|
@@ -90,7 +90,7 @@ public function find_feed($url, $http_function = false) { | |
public function subscribe($topic_url, $http_function = false) { | ||
return $this->change_subscription("subscribe", $topic_url, $http_function = false); | ||
} | ||
|
||
/** | ||
* @param string $topic_url | ||
* @param callable $http_function | ||
|
@@ -102,7 +102,7 @@ public function unsubscribe($topic_url, $http_function = false) { | |
|
||
/** | ||
* helper function since sub/unsub are handled the same way | ||
* | ||
* | ||
* @param string $mode | ||
* @param string $topic_url | ||
* @param callable $http_function | ||
|
@@ -111,61 +111,61 @@ public function unsubscribe($topic_url, $http_function = false) { | |
private function change_subscription($mode, $topic_url, $http_function = false) { | ||
if (!isset($topic_url)) | ||
throw new Exception('Please specify a topic url'); | ||
// lightweight check that we're actually working w/ a valid url | ||
if (!preg_match("|^https?://|i",$topic_url)) | ||
|
||
// lightweight check that we're actually working w/ a valid url | ||
if (!preg_match("|^https?://|i",$topic_url)) | ||
throw new Exception('The specified topic url does not appear to be valid: '.$topic_url); | ||
|
||
// set the mode subscribe/unsubscribe | ||
$post_string = "hub.mode=".$mode; | ||
$post_string .= "&hub.callback=".urlencode($this->callback_url); | ||
$post_string .= "&hub.verify=".$this->verify; | ||
$post_string .= "&hub.verify_token=".$this->verify_token; | ||
$post_string .= "&hub.lease_seconds=".$this->lease_seconds; | ||
|
||
// append the topic url parameters | ||
$post_string .= "&hub.topic=".urlencode($topic_url); | ||
|
||
// make the http post request and return true/false | ||
// easy to over-write to use your own http function | ||
if ($http_function) | ||
return $http_function($this->hub_url,$post_string); | ||
else | ||
return $this->http($this->hub_url,$post_string); | ||
} | ||
|
||
/** | ||
* default http function that uses curl to post to the hub endpoint | ||
* | ||
* | ||
* @param string $url | ||
* @param string $post_string | ||
* @return mixed | ||
*/ | ||
private function http($url, $post_string) { | ||
|
||
// add any additional curl options here | ||
$options = array(CURLOPT_URL => $url, | ||
CURLOPT_USERAGENT => "PubSubHubbub-Subscriber-PHP/1.0", | ||
CURLOPT_RETURNTRANSFER => true); | ||
CURLOPT_USERAGENT => "PubSubHubbub-Subscriber-PHP/1.0", | ||
CURLOPT_RETURNTRANSFER => true); | ||
|
||
if ($post_string) { | ||
$options[CURLOPT_POST] = true; | ||
$options[CURLOPT_POSTFIELDS] = $post_string; | ||
} | ||
|
||
if ($this->credentials) | ||
$options[CURLOPT_USERPWD] = $this->credentials; | ||
|
||
$ch = curl_init(); | ||
curl_setopt_array($ch, $options); | ||
$ch = curl_init(); | ||
curl_setopt_array($ch, $options); | ||
|
||
$response = curl_exec($ch); | ||
$info = curl_getinfo($ch); | ||
// all good -- anything in the 200 range | ||
|
||
// all good -- anything in the 200 range | ||
if (substr($info['http_code'],0,1) == "2") { | ||
return $response; | ||
} | ||
return false; | ||
return false; | ||
} | ||
} |