Switch from oohembed to noembed for default oembed provider

This commit is contained in:
Zach Copley 2011-09-30 19:51:23 +00:00
parent e7ef9e2117
commit c137d69aee
6 changed files with 21 additions and 19 deletions

View File

@ -277,7 +277,7 @@ $default =
'allow_tagging' => array('all' => true), // equivalent to array('local' => true, 'remote' => true) 'allow_tagging' => array('all' => true), // equivalent to array('local' => true, 'remote' => true)
'desclimit' => null), 'desclimit' => null),
'oembed' => 'oembed' =>
array('endpoint' => 'http://oohembed.com/oohembed/', array('endpoint' => 'https://noembed.com/embed/',
'order' => array('built-in', 'well-known', 'service', 'discovery'), 'order' => array('built-in', 'well-known', 'service', 'discovery'),
), ),
'search' => 'search' =>
@ -352,6 +352,5 @@ $default =
array('cache' => true), // whether to cache the router object. Defaults to true, turn off for devel array('cache' => true), // whether to cache the router object. Defaults to true, turn off for devel
'discovery' => 'discovery' =>
array('cors' => false), // Allow Cross-Origin Resource Sharing for service discovery (host-meta, XRD, etc.) array('cors' => false), // Allow Cross-Origin Resource Sharing for service discovery (host-meta, XRD, etc.)
'performance' => array('high' => false), // disable some features for higher performance; default false 'performance' => array('high' => false) // disable some features for higher performance; default false
'oldschool' => array('enabled' => false) // enable users to use old-style UI
); );

View File

@ -61,7 +61,7 @@ class oEmbedHelper
* Some known hosts are whitelisted with API endpoints where we * Some known hosts are whitelisted with API endpoints where we
* know they exist but autodiscovery data isn't available. * know they exist but autodiscovery data isn't available.
* If autodiscovery links are missing and we don't recognize the * If autodiscovery links are missing and we don't recognize the
* host, we'll pass it to oohembed.com's public service which * host, we'll pass it to noembed.com's public service which
* will either proxy or fake info on a lot of sites. * will either proxy or fake info on a lot of sites.
* *
* A few hosts are blacklisted due to known problems with oohembed, * A few hosts are blacklisted due to known problems with oohembed,
@ -94,7 +94,7 @@ class oEmbedHelper
case 'built-in': case 'built-in':
common_log(LOG_INFO, 'Considering built-in oEmbed methods...'); common_log(LOG_INFO, 'Considering built-in oEmbed methods...');
// Blacklist: systems with no oEmbed API of their own, which are // Blacklist: systems with no oEmbed API of their own, which are
// either missing from or broken on oohembed.com's proxy. // either missing from or broken on noembed.com's proxy.
// we know how to look data up in another way... // we know how to look data up in another way...
if (array_key_exists($host, self::$functionMap)) { if (array_key_exists($host, self::$functionMap)) {
common_log(LOG_INFO, 'We have a built-in method for ' . $host); common_log(LOG_INFO, 'We have a built-in method for ' . $host);

View File

@ -7,7 +7,7 @@
* Quickie wrapper around ooembed JSON lookup * Quickie wrapper around ooembed JSON lookup
*/ */
var oEmbed = { var oEmbed = {
api: 'http://oohembed.com/oohembed', api: 'https://noembed.com/embed',
width: 100, width: 100,
height: 75, height: 75,
cache: {}, cache: {},

View File

@ -1 +1 @@
(function(){var b={api:"http://oohembed.com/oohembed",width:100,height:75,cache:{},callbacks:{},lookup:function(d,e){if(typeof b.cache[d]=="object"){e(b.cache[d])}else{if(typeof b.callbacks[d]=="undefined"){b.callbacks[d]=[e];b.rawLookup(d,function(h){b.cache[d]=h;var g=b.callbacks[d];b.callbacks[d]=undefined;for(var f=0;f<g.length;f++){g[f](h)}})}else{b.callbacks[d].push(e)}}},rawLookup:function(d,f){var e={url:d,format:"json",maxwidth:b.width,maxheight:b.height,token:$("#token").val()};$.ajax({url:b.api,data:e,dataType:"json",success:function(g,h){f(g)},error:function(h,i,g){f(null)}})}};SN.Init.LinkPreview=function(d){if(d.api){b.api=d.api}if(d.width){b.width=d.width}if(d.height){b.height=d.height}};var c=SN.U.Counter;SN.U.Counter=function(d){var e=d.data("LinkPreview");if(e){e.previewLinks(d.find(".notice_data-text:first").val())}return c(d)};var a=SN.Init.NoticeFormSetup;SN.Init.NoticeFormSetup=function(d){a(d);d.bind("reset",function(){e.clear()});var e={links:[],state:[],refresh:[],findLinks:function(i){var g=/(?:^| )(https?:\/\/.+?\/.+?)(?= |$)/mg;var f=[];var h;while((h=g.exec(i))!==null){f.push(h[1])}return f},ensureArea:function(){if(d.find(".link-preview").length<1){d.append('<div class="notice-status link-preview thumbnails"></div>')}},prepLinkPreview:function(g){var h="link-preview-"+g;var f=e.links[g];e.refresh[g]=false;e.markLoading(g);b.lookup(f,function(l){var i=null;var j=100;if(l&&typeof l.thumbnail_url=="string"){i=l.thumbnail_url;if(typeof l.thumbnail_width!=="undefined"){if(l.thumbnail_width<j){j=l.thumbnail_width}}}else{if(l&&l.type=="photo"&&typeof l.url=="string"){i=l.url;if(typeof l.width!=="undefined"){if(l.width<j){j=l.width}}}}if(i){e.ensureArea();var k=$('<span class="inline-attachment"><a><img/></a></span>');k.find("a").attr("href",f).attr("target","_blank").last().find("img").attr("src",i).attr("width",j).attr("title",l.title||l.url||f);d.find("."+h).empty().append(k)}else{e.clearLink(g)}if(e.refresh[g]){e.prepLinkPreview(g)}else{e.markDone(g)}})},previewLinks:function(j){var h;var f=e.links;var g=e.findLinks(j);e.links=g;for(h=0;h<f.length&&h<g.length;h++){if(g[h]!=f[h]){if(e.state[h]=="loading"){e.refresh[h]=true}else{e.prepLinkPreview(h)}}}if(g.length>f.length){for(h=f.length;h<g.length;h++){e.addPreviewArea(h);e.prepLinkPreview(h)}}else{if(f.length>g.length){for(h=g.length;h<f.length;h++){e.clearLink(h)}}}if(g.length==0){e.clear()}},addPreviewArea:function(f){e.ensureArea();var g="link-preview-"+f;if(d.find("."+g).length<1){d.find(".link-preview").append('<span class="'+g+'"></span>')}},clearLink:function(f){var g="link-preview-"+f;d.find("."+g).html("")},markLoading:function(f){e.state[f]="loading";var g="link-preview-"+f;d.find("."+g).attr("style","opacity: 0.5")},markDone:function(f){e.state[f]="done";var g="link-preview-"+f;d.find("."+g).removeAttr("style")},clear:function(){e.links=[];d.find(".link-preview").remove()}};d.data("LinkPreview",e)}})(); (function(){var b={api:"https://noembed.com/embed",width:100,height:75,cache:{},callbacks:{},lookup:function(d,e){if(typeof b.cache[d]=="object"){e(b.cache[d])}else{if(typeof b.callbacks[d]=="undefined"){b.callbacks[d]=[e];b.rawLookup(d,function(h){b.cache[d]=h;var g=b.callbacks[d];b.callbacks[d]=undefined;for(var f=0;f<g.length;f++){g[f](h)}})}else{b.callbacks[d].push(e)}}},rawLookup:function(d,f){var e={url:d,format:"json",maxwidth:b.width,maxheight:b.height,token:$("#token").val()};$.ajax({url:b.api,data:e,dataType:"json",success:function(g,h){f(g)},error:function(h,i,g){f(null)}})}};SN.Init.LinkPreview=function(d){if(d.api){b.api=d.api}if(d.width){b.width=d.width}if(d.height){b.height=d.height}};var c=SN.U.Counter;SN.U.Counter=function(d){var e=d.data("LinkPreview");if(e){e.previewLinks(d.find(".notice_data-text:first").val())}return c(d)};var a=SN.Init.NoticeFormSetup;SN.Init.NoticeFormSetup=function(d){a(d);d.bind("reset",function(){e.clear()});var e={links:[],state:[],refresh:[],findLinks:function(i){var g=/(?:^| )(https?:\/\/.+?\/.+?)(?= |$)/mg;var f=[];var h;while((h=g.exec(i))!==null){f.push(h[1])}return f},ensureArea:function(){if(d.find(".link-preview").length<1){d.append('<div class="notice-status link-preview thumbnails"></div>')}},prepLinkPreview:function(g){var h="link-preview-"+g;var f=e.links[g];e.refresh[g]=false;e.markLoading(g);b.lookup(f,function(l){var i=null;var j=100;if(l&&typeof l.thumbnail_url=="string"){i=l.thumbnail_url;if(typeof l.thumbnail_width!=="undefined"){if(l.thumbnail_width<j){j=l.thumbnail_width}}}else{if(l&&l.type=="photo"&&typeof l.url=="string"){i=l.url;if(typeof l.width!=="undefined"){if(l.width<j){j=l.width}}}}if(i){e.ensureArea();var k=$('<span class="inline-attachment"><a><img/></a></span>');k.find("a").attr("href",f).attr("target","_blank").last().find("img").attr("src",i).attr("width",j).attr("title",l.title||l.url||f);d.find("."+h).empty().append(k)}else{e.clearLink(g)}if(e.refresh[g]){e.prepLinkPreview(g)}else{e.markDone(g)}})},previewLinks:function(j){var h;var f=e.links;var g=e.findLinks(j);e.links=g;for(h=0;h<f.length&&h<g.length;h++){if(g[h]!=f[h]){if(e.state[h]=="loading"){e.refresh[h]=true}else{e.prepLinkPreview(h)}}}if(g.length>f.length){for(h=f.length;h<g.length;h++){e.addPreviewArea(h);e.prepLinkPreview(h)}}else{if(f.length>g.length){for(h=g.length;h<f.length;h++){e.clearLink(h)}}}if(g.length==0){e.clear()}},addPreviewArea:function(f){e.ensureArea();var g="link-preview-"+f;if(d.find("."+g).length<1){d.find(".link-preview").append('<span class="'+g+'"></span>')}},clearLink:function(f){var g="link-preview-"+f;d.find("."+g).html("")},markLoading:function(f){e.state[f]="loading";var g="link-preview-"+f;d.find("."+g).attr("style","opacity: 0.5")},markDone:function(f){e.state[f]="done";var g="link-preview-"+f;d.find("."+g).removeAttr("style")},clear:function(){e.links=[];d.find(".link-preview").remove()}};d.data("LinkPreview",e)}})();

View File

@ -35,7 +35,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
* *
* This class provides an interface for our JS-side code to pull info on * This class provides an interface for our JS-side code to pull info on
* links from other sites, using either native oEmbed, our own custom * links from other sites, using either native oEmbed, our own custom
* handlers, or the oohEmbed.com offsite proxy service as configured. * handlers, or the noembed.com offsite proxy service as configured.
* *
* @category oEmbed * @category oEmbed
* @package StatusNet * @package StatusNet

View File

@ -15,22 +15,22 @@ class oEmbedTest extends PHPUnit_Framework_TestCase
public function setup() public function setup()
{ {
$this->old_oohembed = common_config('oohembed', 'endpoint'); $this->old_ohembed = common_config('ohembed', 'endpoint');
} }
public function tearDown() public function tearDown()
{ {
$GLOBALS['config']['oohembed']['endpoint'] = $this->old_oohembed; $GLOBALS['config']['oembed']['endpoint'] = $this->old_ohembed;
} }
/** /**
* Test with oohembed DISABLED. * Test with ohembed DISABLED.
* *
* @dataProvider discoverableSources * @dataProvider discoverableSources
*/ */
public function testoEmbed($url, $expectedType) public function testoEmbed($url, $expectedType)
{ {
$GLOBALS['config']['oohembed']['endpoint'] = false; $GLOBALS['config']['oembed']['endpoint'] = false;
$this->_doTest($url, $expectedType); $this->_doTest($url, $expectedType);
} }
@ -39,14 +39,14 @@ class oEmbedTest extends PHPUnit_Framework_TestCase
* *
* @dataProvider fallbackSources * @dataProvider fallbackSources
*/ */
public function testoohEmbed($url, $expectedType) public function testnoEmbed($url, $expectedType)
{ {
$GLOBALS['config']['oohembed']['endpoint'] = $this->_endpoint(); $GLOBALS['config']['oembed']['endpoint'] = $this->_endpoint();
$this->_doTest($url, $expectedType); $this->_doTest($url, $expectedType);
} }
/** /**
* Get default oohembed endpoint. * Get default oembed endpoint.
* *
* @return string * @return string
*/ */
@ -55,7 +55,7 @@ class oEmbedTest extends PHPUnit_Framework_TestCase
$default = array(); $default = array();
$_server = 'localhost'; $_path = ''; $_server = 'localhost'; $_path = '';
require INSTALLDIR . '/lib/default.php'; require INSTALLDIR . '/lib/default.php';
return $default['oohembed']['endpoint']; return $default['oembed']['endpoint'];
} }
/** /**
@ -113,7 +113,6 @@ class oEmbedTest extends PHPUnit_Framework_TestCase
static public function discoverableSources() static public function discoverableSources()
{ {
$sources = array( $sources = array(
array('http://identi.ca/attachment/34437400', 'photo'),
array('http://www.youtube.com/watch?v=eUgLR232Cnw', 'video'), array('http://www.youtube.com/watch?v=eUgLR232Cnw', 'video'),
array('http://vimeo.com/9283184', 'video'), array('http://vimeo.com/9283184', 'video'),
@ -125,16 +124,20 @@ class oEmbedTest extends PHPUnit_Framework_TestCase
} }
/** /**
* Sample oEmbed targets that can be found via oohembed.com. * Sample oEmbed targets that can be found via noembed.com.
* Includes also discoverableSources() output. * Includes also discoverableSources() output.
* *
* @return array * @return array
*/ */
static public function fallbackSources() static public function fallbackSources()
{ {
$sources = array( $sources = array(
array('http://en.wikipedia.org/wiki/File:Wiki.png', 'link'), // @fixme in future there may be a native provider -- will change to 'photo' array('https://github.com/git/git/commit/85e9c7e1d42849c5c3084a9da748608468310c0e', 'Github Commit'), // @fixme in future there may be a native provider -- will change to 'photo'
); );
$sources = array();
return array_merge(self::discoverableSources(), $sources); return array_merge(self::discoverableSources(), $sources);
} }
} }