From: Anders Kaseorg Date: Fri, 20 Jan 2017 20:58:12 +0000 (-0500) Subject: lib: Upgrade php-publisher from ??? to a5d6a0e (2016-11-15) X-Git-Tag: 17.1~6^2~3 X-Git-Url: https://git.wh0rd.org/?p=tt-rss.git;a=commitdiff_plain;h=5ddc3e274df05d2c6b6943152063b23b99e90f5b lib: Upgrade php-publisher from ??? to a5d6a0e (2016-11-15) https://github.com/pubsubhubbub/php-publisher Signed-off-by: Anders Kaseorg --- diff --git a/include/functions.php b/include/functions.php index ce7627d5..de93267e 100755 --- a/include/functions.php +++ b/include/functions.php @@ -140,7 +140,7 @@ define('SELF_USER_AGENT', 'Tiny Tiny RSS/' . VERSION . ' (http://tt-rss.org/)'); ini_set('user_agent', SELF_USER_AGENT); - require_once 'lib/pubsubhubbub/publisher.php'; + require_once 'lib/pubsubhubbub/Publisher.php'; $schema_version = false; diff --git a/lib/pubsubhubbub/Publisher.php b/lib/pubsubhubbub/Publisher.php new file mode 100644 index 00000000..df7c1920 --- /dev/null +++ b/lib/pubsubhubbub/Publisher.php @@ -0,0 +1,125 @@ +hub_url = $hub_url; + } + + /** + * Accepts either a single url or an array of urls. + * + * @param string|array $topic_urls + * @param callable $http_function + * + * @return mixed + */ + public function publish_update($topic_urls, $http_function = false) + { + if (! isset($topic_urls)) { + throw new InvalidArgumentException('Please specify a topic url'); + } + + // check that we're working with an array + if (! is_array($topic_urls)) { + $topic_urls = [$topic_urls]; + } + + // set the mode to publish + $post_string = 'hub.mode=publish'; + // loop through each topic url + foreach ($topic_urls as $topic_url) { + + // lightweight check that we're actually working w/ a valid url + if (! preg_match('|^https?://|i', $topic_url)) { + throw new InvalidArgumentException('The specified topic url does not appear to be valid: ' . $topic_url); + } + + // append the topic url parameters + $post_string .= '&hub.url=' . 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); + } + + return $this->http_post($this->hub_url, $post_string); + } + + /** + * Returns any error message from the latest request. + * + * @return string + */ + public function last_response() + { + return $this->last_response; + } + + /** + * Default http function that uses curl to post to the hub endpoint. + * + * @param string $url + * @param string $post_string + * + * @return bool + */ + private function http_post($url, $post_string) + { + // add any additional curl options here + $options = [ + CURLOPT_URL => $url, + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => $post_string, + CURLOPT_USERAGENT => 'PubSubHubbub-Publisher-PHP/1.0', + ]; + + $ch = curl_init(); + curl_setopt_array($ch, $options); + + $response = curl_exec($ch); + $this->last_response = $response; + $info = curl_getinfo($ch); + + curl_close($ch); + + return $info['http_code'] == 204; + } +} diff --git a/lib/pubsubhubbub/README.txt b/lib/pubsubhubbub/README.txt deleted file mode 100644 index 3d27c404..00000000 --- a/lib/pubsubhubbub/README.txt +++ /dev/null @@ -1,21 +0,0 @@ -This PHP library for PubSubHubbub was written by Josh Fraser (joshfraser.com) and is released under the Apache 2.0 License - -Usage: -// specify which hub you want to use. in this case we'll use the demo hub on app engine. -$hub_url = "http://pubsubhubbub.appspot.com/"; - -// create a new pubsubhubbub publisher -$p = new Publisher($hub_url); - -// specify the feed that has been updated -$topic_url = "http://www.onlineaspect.com"; - -// notify the hub that the specified topic_url (ATOM feed) has been updated -// alternatively, publish_update() also accepts an array of topic urls -if ($p->publish_update($topic_url)) { -    echo "$topic_url was successfully published to $hub_url"; -} else { -    echo "Ooops..."; -    print_r($p->last_response()); -} - \ No newline at end of file diff --git a/lib/pubsubhubbub/publisher.php b/lib/pubsubhubbub/publisher.php deleted file mode 100644 index f176a9b8..00000000 --- a/lib/pubsubhubbub/publisher.php +++ /dev/null @@ -1,86 +0,0 @@ -hub_url = $hub_url; - } - - // accepts either a single url or an array of urls - public function publish_update($topic_urls, $http_function = false) { - if (!isset($topic_urls)) - throw new Exception('Please specify a topic url'); - - // check that we're working with an array - if (!is_array($topic_urls)) { - $topic_urls = array($topic_urls); - } - - // set the mode to publish - $post_string = "hub.mode=publish"; - // loop through each topic url - foreach ($topic_urls as $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); - - // append the topic url parameters - $post_string .= "&hub.url=".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_post($this->hub_url,$post_string); - } - - // returns any error message from the latest request - public function last_response() { - return $this->last_response; - } - - // default http function that uses curl to post to the hub endpoint - private function http_post($url, $post_string) { - - // add any additional curl options here - $options = array(CURLOPT_URL => $url, - CURLOPT_POST => true, - CURLOPT_POSTFIELDS => $post_string, - CURLOPT_USERAGENT => "PubSubHubbub-Publisher-PHP/1.0"); - - $ch = curl_init(); - curl_setopt_array($ch, $options); - - $response = curl_exec($ch); - $this->last_response = $response; - $info = curl_getinfo($ch); - - curl_close($ch); - - // all good - if ($info['http_code'] == 204) - return true; - return false; - } -} - -?> \ No newline at end of file