Try oEmbed discovery before using oohembed

This commit is contained in:
Craig Andrews 2009-07-15 17:10:36 -04:00
parent f75932601c
commit a35794e3c3
3 changed files with 39 additions and 27 deletions

View File

@ -79,9 +79,8 @@ class File extends Memcached_DataObject
if (isset($redir_data['type']) if (isset($redir_data['type'])
&& ('text/html' === substr($redir_data['type'], 0, 9)) && ('text/html' === substr($redir_data['type'], 0, 9))
&& ($oembed_data = File_oembed::_getOembed($given_url)) && ($oembed_data = File_oembed::_getOembed($given_url))) {
&& isset($oembed_data['json'])) { File_oembed::saveNew($oembed_data, $file_id);
File_oembed::saveNew($oembed_data['json'], $file_id);
} }
return $x; return $x;
} }

View File

@ -56,33 +56,46 @@ class File_oembed extends Memcached_DataObject
return array(false, false, false); return array(false, false, false);
} }
function _getOembed($url, $maxwidth = 500, $maxheight = 400, $format = 'json') { function _getOembed($url, $maxwidth = 500, $maxheight = 400) {
$cmd = common_config('oohembed', 'endpoint') . '?url=' . urlencode($url); require_once INSTALLDIR.'/extlib/Services/oEmbed.php';
if (is_int($maxwidth)) $cmd .= "&maxwidth=$maxwidth"; $parameters = array(
if (is_int($maxheight)) $cmd .= "&maxheight=$maxheight"; 'maxwidth'=>$maxwidth,
if (is_string($format)) $cmd .= "&format=$format"; 'maxheight'=>$maxheight,
$oe = @file_get_contents($cmd); );
if (false === $oe) return false; try{
return array($format => (('json' === $format) ? json_decode($oe, true) : $oe)); $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;
}
}
} }
function saveNew($data, $file_id) { function saveNew($data, $file_id) {
$file_oembed = new File_oembed; $file_oembed = new File_oembed;
$file_oembed->file_id = $file_id; $file_oembed->file_id = $file_id;
$file_oembed->version = $data['version']; $file_oembed->version = $data->version;
$file_oembed->type = $data['type']; $file_oembed->type = $data->type;
if (!empty($data['provider_name'])) $file_oembed->provider = $data['provider_name']; if (!empty($data->provider_name)) $file_oembed->provider = $data->provider_name;
if (!isset($file_oembed->provider) && !empty($data['provide'])) $file_oembed->provider = $data['provider']; if (!empty($data->provider)) $file_oembed->provider = $data->provider;
if (!empty($data['provide_url'])) $file_oembed->provider_url = $data['provider_url']; if (!empty($data->provide_url)) $file_oembed->provider_url = $data->provider_url;
if (!empty($data['width'])) $file_oembed->width = intval($data['width']); if (!empty($data->width)) $file_oembed->width = intval($data->width);
if (!empty($data['height'])) $file_oembed->height = intval($data['height']); if (!empty($data->height)) $file_oembed->height = intval($data->height);
if (!empty($data['html'])) $file_oembed->html = $data['html']; if (!empty($data->html)) $file_oembed->html = $data->html;
if (!empty($data['title'])) $file_oembed->title = $data['title']; if (!empty($data->title)) $file_oembed->title = $data->title;
if (!empty($data['author_name'])) $file_oembed->author_name = $data['author_name']; if (!empty($data->author_name)) $file_oembed->author_name = $data->author_name;
if (!empty($data['author_url'])) $file_oembed->author_url = $data['author_url']; if (!empty($data->author_url)) $file_oembed->author_url = $data->author_url;
if (!empty($data['url'])) $file_oembed->url = $data['url']; if (!empty($data->url)) $file_oembed->url = $data->url;
$file_oembed->insert(); $file_oembed->insert();
if (!empty($data['thumbnail_url'])) { if (!empty($data->thumbnail_url)) {
File_thumbnail::saveNew($data, $file_id); File_thumbnail::saveNew($data, $file_id);
} }
} }

View File

@ -51,9 +51,9 @@ class File_thumbnail extends Memcached_DataObject
function saveNew($data, $file_id) { function saveNew($data, $file_id) {
$tn = new File_thumbnail; $tn = new File_thumbnail;
$tn->file_id = $file_id; $tn->file_id = $file_id;
$tn->url = $data['thumbnail_url']; $tn->url = $data->thumbnail_url;
$tn->width = intval($data['thumbnail_width']); $tn->width = intval($data->thumbnail_width);
$tn->height = intval($data['thumbnail_height']); $tn->height = intval($data->thumbnail_height);
$tn->insert(); $tn->insert();
} }
} }