From 6b3f1d4bb5c909413f31d7df5bab0e8a4084e29e Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Wed, 23 Apr 2014 23:12:55 +0200 Subject: Add support for phancap website thumbnailer. Drop support for artviper, since their service is gone. --- src/SemanticScuttle/Thumbnailer/Null.php | 52 ++++++++++++++++ src/SemanticScuttle/Thumbnailer/Phancap.php | 92 +++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 src/SemanticScuttle/Thumbnailer/Null.php create mode 100644 src/SemanticScuttle/Thumbnailer/Phancap.php (limited to 'src/SemanticScuttle/Thumbnailer') diff --git a/src/SemanticScuttle/Thumbnailer/Null.php b/src/SemanticScuttle/Thumbnailer/Null.php new file mode 100644 index 0000000..ec12135 --- /dev/null +++ b/src/SemanticScuttle/Thumbnailer/Null.php @@ -0,0 +1,52 @@ + + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ + +/** + * Dummy thumbnailer that never returns a thumbnail URL + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ +class SemanticScuttle_Thumbnailer_Null +{ + /** + * Set dummy configuration + * + * @param array $config Dummy configuration + * + * @return void + */ + public function setConfig($config) + { + } + + /** + * Get the URL for a website thumbnail. + * Always returns false. + * + * @param string $bookmarkUrl URL of website to create thumbnail for + * @param integer $width Screenshot width + * @param integer $height Screenshot height + * + * @return mixed FALSE when no screenshot could be obtained, + * string with the URL otherwise + */ + public function getThumbnailUrl($bookmarkUrl, $width, $height) + { + return false; + } +} +?> diff --git a/src/SemanticScuttle/Thumbnailer/Phancap.php b/src/SemanticScuttle/Thumbnailer/Phancap.php new file mode 100644 index 0000000..1b76849 --- /dev/null +++ b/src/SemanticScuttle/Thumbnailer/Phancap.php @@ -0,0 +1,92 @@ + + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ + +/** + * Show website thumbnails/screenshots using phancap + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + * @see http://cweiske.de/phancap.htm + */ +class SemanticScuttle_Thumbnailer_Phancap +{ + /** + * Configuration array. + * Required keys: + * - url + * - token + * - secret + */ + protected $config = array(); + + /** + * Set phancap configuration + * + * @param array $config Phancap configuration + * + * @return void + */ + public function setConfig($config) + { + $this->config = $config; + } + + /** + * Get the URL for a website thumbnail + * + * @param string $bookmarkUrl URL of website to create thumbnail for + * @param integer $width Screenshot width + * @param integer $height Screenshot height + * + * @return mixed FALSE when no screenshot could be obtained, + * string with the URL otherwise + */ + public function getThumbnailUrl($bookmarkUrl, $width, $height) + { + //default parameters for the phancap service + $parameters = array( + 'url' => $bookmarkUrl, + 'swidth' => $width, + 'sheight' => $height, + 'sformat' => 'jpg', + ); + + if (isset($this->config['token']) && $this->config['token'] != '') { + $parameters['atoken'] = $this->config['token']; + $parameters['atimestamp'] = time(); + + //create signature + ksort($parameters); + foreach ($parameters as $key => $value) { + $encparams[] = $key . '=' . rawurlencode($value); + } + $encstring = implode('&', $encparams); + $signature = hash_hmac('sha1', $encstring, $this->config['secret']); + //append signature to parameters + $parameters['asignature'] = $signature; + } + + //url-encode the parameters + $urlParams = array(); + foreach ($parameters as $key => $value) { + $urlParams[] = $key . '=' . urlencode($value); + } + + //final URL + return $this->config['url'] . '?' . implode('&', $urlParams); + } +} +?> -- cgit v1.2.3