diff --git a/actions/api.php b/actions/api.php index fa5a7e7ae9..8b92889f8a 100644 --- a/actions/api.php +++ b/actions/api.php @@ -129,7 +129,7 @@ class ApiAction extends Action 'laconica/config', 'laconica/wadl', 'tags/timeline', - 'laconica/oembed', + 'oembed/oembed', 'groups/timeline'); static $bareauth = array('statuses/user_timeline', diff --git a/actions/attachment.php b/actions/attachment.php index c9c416cb5b..c6a5d0d523 100644 --- a/actions/attachment.php +++ b/actions/attachment.php @@ -104,7 +104,7 @@ class AttachmentAction extends Action 'type'=>'application/json+oembed', 'href'=>common_local_url( 'api', - array('apiaction'=>'laconica','method'=>'oembed.json'), + array('apiaction'=>'oembed','method'=>'oembed.json'), array('url'=> common_local_url('attachment', array('attachment' => $this->attachment->id)))), @@ -113,7 +113,7 @@ class AttachmentAction extends Action 'type'=>'text/xml+oembed', 'href'=>common_local_url( 'api', - array('apiaction'=>'laconica','method'=>'oembed.xml'), + array('apiaction'=>'oembed','method'=>'oembed.xml'), array('url'=> common_local_url('attachment', array('attachment' => $this->attachment->id)))), diff --git a/actions/shownotice.php b/actions/shownotice.php index 4cf226f1cf..8f73dc824a 100644 --- a/actions/shownotice.php +++ b/actions/shownotice.php @@ -279,14 +279,14 @@ class ShownoticeAction extends OwnerDesignAction 'type'=>'application/json+oembed', 'href'=>common_local_url( 'api', - array('apiaction'=>'laconica','method'=>'oembed.json'), + 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'=>'laconica','method'=>'oembed.xml'), + array('apiaction'=>'oembed','method'=>'oembed.xml'), array('url'=>$this->notice->uri)), 'title'=>'oEmbed'),null); } diff --git a/actions/twitapilaconica.php b/actions/twitapilaconica.php index 114dff6eed..442fdbcef2 100644 --- a/actions/twitapilaconica.php +++ b/actions/twitapilaconica.php @@ -172,124 +172,4 @@ class TwitapilaconicaAction extends TwitterapiAction $this->serverError(_('API method under construction.'), 501); } - function oembed($args, $apidata) - { - parent::handle($args); - - common_debug("in oembed api action"); - - $this->auth_user = $apidata['user']; - - $url = $args['url']; - if( substr(strtolower($url),0,strlen(common_root_url())) == strtolower(common_root_url()) ){ - $path = substr($url,strlen(common_root_url())); - - $r = Router::get(); - - $proxy_args = $r->map($path); - - if (!$proxy_args) { - $this->serverError(_("$path not found"), 404); - } - $oembed=array(); - $oembed['version']='1.0'; - $oembed['provider_name']=common_config('site', 'name'); - $oembed['provider_url']=common_root_url(); - switch($proxy_args['action']){ - case 'shownotice': - $oembed['type']='link'; - $id = $proxy_args['notice']; - $notice = Notice::staticGet($id); - if(empty($notice)){ - $this->serverError(_("notice $id not found"), 404); - } - $profile = $notice->getProfile(); - if (empty($profile)) { - $this->serverError(_('Notice has no profile'), 500); - } - if (!empty($profile->fullname)) { - $authorname = $profile->fullname . ' (' . $profile->nickname . ')'; - } else { - $authorname = $profile->nickname; - } - $oembed['title'] = sprintf(_('%1$s\'s status on %2$s'), - $authorname, - common_exact_date($notice->created)); - $oembed['author_name']=$authorname; - $oembed['author_url']=$profile->profileurl; - $oembed['url']=($notice->url?$notice->url:$notice->uri); - $oembed['html']=$notice->rendered; - break; - case 'attachment': - $id = $proxy_args['attachment']; - $attachment = File::staticGet($id); - if(empty($attachment)){ - $this->serverError(_("attachment $id not found"), 404); - } - if(empty($attachment->filename) && $file_oembed = File_oembed::staticGet('file_id', $attachment->id)){ - // Proxy the existing oembed information - $oembed['type']=$file_oembed->type; - $oembed['provider']=$file_oembed->provider; - $oembed['provider_url']=$file_oembed->provider_url; - $oembed['width']=$file_oembed->width; - $oembed['height']=$file_oembed->height; - $oembed['html']=$file_oembed->html; - $oembed['title']=$file_oembed->title; - $oembed['author_name']=$file_oembed->author_name; - $oembed['author_url']=$file_oembed->author_url; - $oembed['url']=$file_oembed->url; - }else if(substr($attachment->mimetype,0,strlen('image/'))=='image/'){ - $oembed['type']='photo'; - //TODO set width and height - //$oembed['width']= - //$oembed['height']= - $oembed['url']=$attachment->url; - }else{ - $oembed['type']='link'; - $oembed['url']=common_local_url('attachment', - array('attachment' => $attachment->id)); - } - if($attachment->title) $oembed['title']=$attachment->title; - break; - default: - $this->serverError(_("$path not supported for oembed requests"), 501); - } - - switch($apidata['content-type']){ - case 'xml': - $this->init_document('xml'); - $this->elementStart('oembed'); - $this->element('version',null,$oembed['version']); - $this->element('type',null,$oembed['type']); - if($oembed['provider_name']) $this->element('provider_name',null,$oembed['provider_name']); - if($oembed['provider_url']) $this->element('provider_url',null,$oembed['provider_url']); - if($oembed['title']) $this->element('title',null,$oembed['title']); - if($oembed['author_name']) $this->element('author_name',null,$oembed['author_name']); - if($oembed['author_url']) $this->element('author_url',null,$oembed['author_url']); - if($oembed['url']) $this->element('url',null,$oembed['url']); - if($oembed['html']) $this->element('html',null,$oembed['html']); - if($oembed['width']) $this->element('width',null,$oembed['width']); - if($oembed['height']) $this->element('height',null,$oembed['height']); - if($oembed['cache_age']) $this->element('cache_age',null,$oembed['cache_age']); - if($oembed['thumbnail_url']) $this->element('thumbnail_url',null,$oembed['thumbnail_url']); - if($oembed['thumbnail_width']) $this->element('thumbnail_width',null,$oembed['thumbnail_width']); - if($oembed['thumbnail_height']) $this->element('thumbnail_height',null,$oembed['thumbnail_height']); - - - $this->elementEnd('oembed'); - $this->end_document('xml'); - break; - case 'json': - $this->init_document('json'); - print(json_encode($oembed)); - $this->end_document('json'); - break; - default: - $this->serverError(_('content type ' . $apidata['content-type'] . ' not supported'), 501); - } - - }else{ - $this->serverError(_('Only ' . common_root_url() . ' urls over plain http please'), 404); - } - } } diff --git a/lib/router.php b/lib/router.php index 652d2a2663..bf3895bf01 100644 --- a/lib/router.php +++ b/lib/router.php @@ -113,6 +113,11 @@ class Router $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 foreach (array('register', 'confirmaddress', 'recoverpassword') as $c) {