summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorBrion Vibber <brion@status.net>2010-11-12 17:41:35 -0800
committerBrion Vibber <brion@status.net>2010-11-12 17:41:35 -0800
commit4f323efdf7abc5452152a87241e320aca20ce486 (patch)
tree7a8a2abd48469ac068cee78bbd02fc0690ba003d /classes
parent398e622fecdb2b2b6bf6cde975e3978284db62b4 (diff)
Encapsulate the oEmbed -> oohembed fallback into oEmbedHelper class. Also added a chance to whitelist sites that don't show discovery info but do have oEmbed API endpoints, and to provide alternate APIs for some common services.
Newly supported: - TwitPic: added a local function using TwitPic's API, since the oohembed implementation for TwitPic produced invalid output which Services_oEmbed rejects. (bug filed upstream) Tweaked... - Flickr: works, now using whitelist to use their endpoint directly instead of going through oohembed - Youtube: worked around a bug in Services_oEmbed which broke the direct use of API discovery info, so we don't have to use oohembed. Not currently working... - YFrog: whitelisting their endpoint directly as the oohembed output is broken, but this doesn't appear to work currently as I think things are confused by YFrog's servers giving a '204 No Content' response on our HEAD checks on the original link.
Diffstat (limited to 'classes')
-rw-r--r--classes/File_oembed.php20
1 files changed, 5 insertions, 15 deletions
diff --git a/classes/File_oembed.php b/classes/File_oembed.php
index bcb2f7bac..b7bf3a5da 100644
--- a/classes/File_oembed.php
+++ b/classes/File_oembed.php
@@ -59,25 +59,15 @@ class File_oembed extends Memcached_DataObject
}
function _getOembed($url) {
- require_once INSTALLDIR.'/extlib/Services/oEmbed.php';
$parameters = array(
'maxwidth' => common_config('attachments', 'thumb_width'),
'maxheight' => common_config('attachments', 'thumb_height'),
);
- try{
- $oEmbed = new Services_oEmbed($url);
- $object = $oEmbed->getObject($parameters);
- return $object;
- }catch(Exception $e){
- try{
- $oEmbed = new Services_oEmbed($url, array(
- Services_oEmbed::OPTION_API => common_config('oohembed', 'endpoint')
- ));
- $object = $oEmbed->getObject($parameters);
- return $object;
- }catch(Exception $ex){
- return false;
- }
+ try {
+ return oEmbedHelper::getObject($url, $parameters);
+ } catch (Exception $e) {
+ common_log(LOG_ERR, "Error during oembed lookup for $url - " . $e->getMessage());
+ return false;
}
}