Skip to content

Commit

Permalink
Merge pull request #4 from miniplay/fix-namespace
Browse files Browse the repository at this point in the history
Fix namespace + autoloading issue. Fix example.
  • Loading branch information
pfefferle committed Nov 4, 2015
2 parents b47d17d + 91da356 commit 28a8c26
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 46 deletions.
7 changes: 2 additions & 5 deletions example.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);

?>

82 changes: 41 additions & 41 deletions src/subscriber.php → src/Subscriber.php
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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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;
}
}

0 comments on commit 28a8c26

Please sign in to comment.