Merge branch 'oembed-provider' into 0.8.x
This commit is contained in:
commit
3dbbefd5ad
|
@ -129,6 +129,7 @@ class ApiAction extends Action
|
||||||
'laconica/config',
|
'laconica/config',
|
||||||
'laconica/wadl',
|
'laconica/wadl',
|
||||||
'tags/timeline',
|
'tags/timeline',
|
||||||
|
'oembed/oembed',
|
||||||
'groups/timeline');
|
'groups/timeline');
|
||||||
|
|
||||||
static $bareauth = array('statuses/user_timeline',
|
static $bareauth = array('statuses/user_timeline',
|
||||||
|
|
|
@ -98,6 +98,28 @@ class AttachmentAction extends Action
|
||||||
return $a->title();
|
return $a->title();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function extraHead()
|
||||||
|
{
|
||||||
|
$this->element('link',array('rel'=>'alternate',
|
||||||
|
'type'=>'application/json+oembed',
|
||||||
|
'href'=>common_local_url(
|
||||||
|
'api',
|
||||||
|
array('apiaction'=>'oembed','method'=>'oembed.json'),
|
||||||
|
array('url'=>
|
||||||
|
common_local_url('attachment',
|
||||||
|
array('attachment' => $this->attachment->id)))),
|
||||||
|
'title'=>'oEmbed'),null);
|
||||||
|
$this->element('link',array('rel'=>'alternate',
|
||||||
|
'type'=>'text/xml+oembed',
|
||||||
|
'href'=>common_local_url(
|
||||||
|
'api',
|
||||||
|
array('apiaction'=>'oembed','method'=>'oembed.xml'),
|
||||||
|
array('url'=>
|
||||||
|
common_local_url('attachment',
|
||||||
|
array('attachment' => $this->attachment->id)))),
|
||||||
|
'title'=>'oEmbed'),null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle input
|
* Handle input
|
||||||
*
|
*
|
||||||
|
|
|
@ -275,6 +275,20 @@ class ShownoticeAction extends OwnerDesignAction
|
||||||
$this->element('meta', array('name' => 'microid',
|
$this->element('meta', array('name' => 'microid',
|
||||||
'content' => $id->toString()));
|
'content' => $id->toString()));
|
||||||
}
|
}
|
||||||
|
$this->element('link',array('rel'=>'alternate',
|
||||||
|
'type'=>'application/json+oembed',
|
||||||
|
'href'=>common_local_url(
|
||||||
|
'api',
|
||||||
|
array('apiaction'=>'oembed','method'=>'oembed.json'),
|
||||||
|
array('url'=>$this->notice->uri)),
|
||||||
|
'title'=>'oEmbed'),null);
|
||||||
|
$this->element('link',array('rel'=>'alternate',
|
||||||
|
'type'=>'text/xml+oembed',
|
||||||
|
'href'=>common_local_url(
|
||||||
|
'api',
|
||||||
|
array('apiaction'=>'oembed','method'=>'oembed.xml'),
|
||||||
|
array('url'=>$this->notice->uri)),
|
||||||
|
'title'=>'oEmbed'),null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -171,4 +171,5 @@ class TwitapilaconicaAction extends TwitterapiAction
|
||||||
parent::handle($args);
|
parent::handle($args);
|
||||||
$this->serverError(_('API method under construction.'), 501);
|
$this->serverError(_('API method under construction.'), 501);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -162,7 +162,7 @@ class Services_oEmbed
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->options[self::OPTION_API] === null) {
|
if ($this->options[self::OPTION_API] === null) {
|
||||||
$this->options[self::OPTION_API] = $this->discover();
|
$this->options[self::OPTION_API] = $this->discover($url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,7 +319,7 @@ class Services_oEmbed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (isset($ret['json']) ? $ret['json'] : array_pop($ret));
|
return (isset($ret['application/json']) ? $ret['application/json'] : array_pop($ret));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -113,6 +113,11 @@ class Router
|
||||||
|
|
||||||
$m->connect('main/tagother/:id', array('action' => 'tagother'));
|
$m->connect('main/tagother/:id', array('action' => 'tagother'));
|
||||||
|
|
||||||
|
$m->connect('main/:method',
|
||||||
|
array('action' => 'api',
|
||||||
|
'method' => 'oembed(.xml|.json)?',
|
||||||
|
'apiaction' => 'oembed'));
|
||||||
|
|
||||||
// these take a code
|
// these take a code
|
||||||
|
|
||||||
foreach (array('register', 'confirmaddress', 'recoverpassword') as $c) {
|
foreach (array('register', 'confirmaddress', 'recoverpassword') as $c) {
|
||||||
|
@ -390,6 +395,10 @@ class Router
|
||||||
|
|
||||||
// laconica
|
// laconica
|
||||||
|
|
||||||
|
$m->connect('api/laconica/:method',
|
||||||
|
array('action' => 'api',
|
||||||
|
'apiaction' => 'laconica'));
|
||||||
|
|
||||||
$m->connect('api/laconica/:method',
|
$m->connect('api/laconica/:method',
|
||||||
array('action' => 'api',
|
array('action' => 'api',
|
||||||
'apiaction' => 'laconica'));
|
'apiaction' => 'laconica'));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user