From: Evan Prodromou Date: Sat, 24 Apr 2010 18:22:51 +0000 (-0400) Subject: move url shortener superclass to lib from plugin X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=869a6be0f5779aff69018d02f9ac0273946040d9;p=quix0rs-gnu-social.git move url shortener superclass to lib from plugin --- diff --git a/lib/urlshortenerplugin.php b/lib/urlshortenerplugin.php new file mode 100644 index 0000000000..8acfac26f4 --- /dev/null +++ b/lib/urlshortenerplugin.php @@ -0,0 +1,155 @@ +. + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +/** + * Superclass for plugins that do URL shortening + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +abstract class UrlShortenerPlugin extends Plugin +{ + public $shortenerName; + public $freeService = false; + + // Url Shortener plugins should implement some (or all) + // of these methods + + /** + * Make an URL shorter. + * + * @param string $url URL to shorten + * + * @return string shortened version of the url, or null on failure + */ + + protected abstract function shorten($url); + + /** + * Utility to get the data at an URL + * + * @param string $url URL to fetch + * + * @return string response body + * + * @todo rename to code-standard camelCase httpGet() + */ + + protected function http_get($url) + { + $request = HTTPClient::start(); + $response = $request->get($url); + return $response->getBody(); + } + + /** + * Utility to post a request and get a response URL + * + * @param string $url URL to fetch + * @param array $data post parameters + * + * @return string response body + * + * @todo rename to code-standard httpPost() + */ + + protected function http_post($url, $data) + { + $request = HTTPClient::start(); + $response = $request->post($url, null, $data); + return $response->getBody(); + } + + // Hook handlers + + /** + * Called when all plugins have been initialized + * + * @return boolean hook value + */ + + function onInitializePlugin() + { + if (!isset($this->shortenerName)) { + throw new Exception("must specify a shortenerName"); + } + return true; + } + + /** + * Called when a showing the URL shortener drop-down box + * + * Properties of the shortening service currently only + * include whether it's a free service. + * + * @param array &$shorteners array mapping shortener name to properties + * + * @return boolean hook value + */ + + function onGetUrlShorteners(&$shorteners) + { + $shorteners[$this->shortenerName] = + array('freeService' => $this->freeService); + return true; + } + + /** + * Called to shorten an URL + * + * @param string $url URL to shorten + * @param string $shortenerName Shortening service. Don't handle if it's + * not you! + * @param string &$shortenedUrl URL after shortening; out param. + * + * @return boolean hook value + */ + + function onStartShortenUrl($url, $shortenerName, &$shortenedUrl) + { + if ($shortenerName == $this->shortenerName) { + $result = $this->shorten($url); + if (isset($result) && $result != null && $result !== false) { + $shortenedUrl = $result; + common_log(LOG_INFO, + __CLASS__ . ": $this->shortenerName ". + "shortened $url to $shortenedUrl"); + return false; + } + } + return true; + } +} diff --git a/plugins/BitlyUrl/BitlyUrlPlugin.php b/plugins/BitlyUrl/BitlyUrlPlugin.php index f7f28b4d6c..b649d3d0b2 100644 --- a/plugins/BitlyUrl/BitlyUrlPlugin.php +++ b/plugins/BitlyUrl/BitlyUrlPlugin.php @@ -31,8 +31,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/plugins/UrlShortener/UrlShortenerPlugin.php'; - class BitlyUrlPlugin extends UrlShortenerPlugin { public $serviceUrl; diff --git a/plugins/LilUrl/LilUrlPlugin.php b/plugins/LilUrl/LilUrlPlugin.php index c3e37c0c0f..cdff9f4e65 100644 --- a/plugins/LilUrl/LilUrlPlugin.php +++ b/plugins/LilUrl/LilUrlPlugin.php @@ -31,8 +31,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/plugins/UrlShortener/UrlShortenerPlugin.php'; - class LilUrlPlugin extends UrlShortenerPlugin { public $serviceUrl; diff --git a/plugins/PtitUrl/PtitUrlPlugin.php b/plugins/PtitUrl/PtitUrlPlugin.php index ddba942e6d..cdf46846ba 100644 --- a/plugins/PtitUrl/PtitUrlPlugin.php +++ b/plugins/PtitUrl/PtitUrlPlugin.php @@ -30,7 +30,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/plugins/UrlShortener/UrlShortenerPlugin.php'; class PtitUrlPlugin extends UrlShortenerPlugin { diff --git a/plugins/SimpleUrl/SimpleUrlPlugin.php b/plugins/SimpleUrl/SimpleUrlPlugin.php index 6eac7dbb1e..5d3f97d33d 100644 --- a/plugins/SimpleUrl/SimpleUrlPlugin.php +++ b/plugins/SimpleUrl/SimpleUrlPlugin.php @@ -31,8 +31,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/plugins/UrlShortener/UrlShortenerPlugin.php'; - class SimpleUrlPlugin extends UrlShortenerPlugin { public $serviceUrl; diff --git a/plugins/TightUrl/TightUrlPlugin.php b/plugins/TightUrl/TightUrlPlugin.php index e2d494a7bd..f242db6c80 100644 --- a/plugins/TightUrl/TightUrlPlugin.php +++ b/plugins/TightUrl/TightUrlPlugin.php @@ -31,8 +31,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/plugins/UrlShortener/UrlShortenerPlugin.php'; - class TightUrlPlugin extends UrlShortenerPlugin { public $serviceUrl; diff --git a/plugins/UrlShortener/UrlShortenerPlugin.php b/plugins/UrlShortener/UrlShortenerPlugin.php deleted file mode 100644 index 8acfac26f4..0000000000 --- a/plugins/UrlShortener/UrlShortenerPlugin.php +++ /dev/null @@ -1,155 +0,0 @@ -. - * - * @category Plugin - * @package StatusNet - * @author Craig Andrews - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} - -/** - * Superclass for plugins that do URL shortening - * - * @category Plugin - * @package StatusNet - * @author Craig Andrews - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - */ - -abstract class UrlShortenerPlugin extends Plugin -{ - public $shortenerName; - public $freeService = false; - - // Url Shortener plugins should implement some (or all) - // of these methods - - /** - * Make an URL shorter. - * - * @param string $url URL to shorten - * - * @return string shortened version of the url, or null on failure - */ - - protected abstract function shorten($url); - - /** - * Utility to get the data at an URL - * - * @param string $url URL to fetch - * - * @return string response body - * - * @todo rename to code-standard camelCase httpGet() - */ - - protected function http_get($url) - { - $request = HTTPClient::start(); - $response = $request->get($url); - return $response->getBody(); - } - - /** - * Utility to post a request and get a response URL - * - * @param string $url URL to fetch - * @param array $data post parameters - * - * @return string response body - * - * @todo rename to code-standard httpPost() - */ - - protected function http_post($url, $data) - { - $request = HTTPClient::start(); - $response = $request->post($url, null, $data); - return $response->getBody(); - } - - // Hook handlers - - /** - * Called when all plugins have been initialized - * - * @return boolean hook value - */ - - function onInitializePlugin() - { - if (!isset($this->shortenerName)) { - throw new Exception("must specify a shortenerName"); - } - return true; - } - - /** - * Called when a showing the URL shortener drop-down box - * - * Properties of the shortening service currently only - * include whether it's a free service. - * - * @param array &$shorteners array mapping shortener name to properties - * - * @return boolean hook value - */ - - function onGetUrlShorteners(&$shorteners) - { - $shorteners[$this->shortenerName] = - array('freeService' => $this->freeService); - return true; - } - - /** - * Called to shorten an URL - * - * @param string $url URL to shorten - * @param string $shortenerName Shortening service. Don't handle if it's - * not you! - * @param string &$shortenedUrl URL after shortening; out param. - * - * @return boolean hook value - */ - - function onStartShortenUrl($url, $shortenerName, &$shortenedUrl) - { - if ($shortenerName == $this->shortenerName) { - $result = $this->shorten($url); - if (isset($result) && $result != null && $result !== false) { - $shortenedUrl = $result; - common_log(LOG_INFO, - __CLASS__ . ": $this->shortenerName ". - "shortened $url to $shortenedUrl"); - return false; - } - } - return true; - } -}