@@ -31,51 +31,60 @@ function fixOembedIframeAttributes(obj) {
31
31
}
32
32
33
33
function _getOembedIframe ( oembed ) {
34
- if ( ! oembed . html ) {
35
- return null ;
36
- }
34
+
37
35
if ( typeof oembed . _iframe === 'undefined' ) {
38
36
39
- // Allow encoded entities if they start from $lt;
40
- var html = oembed . html5 || oembed . html ;
41
- if ( / ^ & l t ; $ / i. test ( html ) ) {
42
- html = entities . decodeHTML ( html ) ;
43
- }
37
+ var _iframe = null ;
38
+
39
+ if ( oembed . html5 || oembed . html ) {
40
+
41
+ // Allow encoded entities if they start from $lt;
42
+ var html = oembed . html5 || oembed . html ;
43
+ if ( / ^ & l t ; $ / i. test ( html ) ) {
44
+ html = entities . decodeHTML ( html ) ;
45
+ }
46
+
47
+ var $container = cheerio ( '<div>' ) ;
48
+ try {
49
+ $container . html ( html ) ;
50
+ } catch ( ex ) { }
51
+ var $iframe = $container . find ( 'iframe' ) ;
52
+
53
+ if ( $iframe . length === 2 && / < i f r a m e > $ / i. test ( html ) ) {
54
+ // Forgive mis-closed iFrame tag
55
+ $iframe = $iframe . first ( ) ;
56
+ }
44
57
45
- var $container = cheerio ( '<div>' ) ;
46
- try {
47
- $container . html ( html ) ;
48
- } catch ( ex ) { }
49
- var $iframe = $container . find ( 'iframe' ) ;
58
+ if ( $iframe . length === 1 ) {
59
+ _iframe = fixOembedIframeAttributes ( $iframe [ 0 ] . attribs ) ;
60
+ _iframe . placeholder = oembed . thumbnail_url ;
61
+ }
50
62
51
- if ( $iframe . length === 2 && / < i f r a m e > $ / i . test ( html ) ) {
52
- // Forgive mis-closed iFrame tag
53
- $iframe = $iframe . first ( ) ;
63
+ // When oembed is in fact iframe from domain fallbacks on oEmbedError
64
+ } else if ( oembed . src ) {
65
+ _iframe = oembed ;
54
66
}
55
67
56
- if ( $iframe . length === 1 ) {
57
- oembed . _iframe = fixOembedIframeAttributes ( $iframe [ 0 ] . attribs ) ;
58
-
59
- if ( oembed . _iframe && oembed . _iframe . src ) {
60
- var src = URL . parse ( oembed . _iframe . src , true ) ;
61
- oembed . _iframe . host = src . host ;
62
- oembed . _iframe . pathname = src . pathname ;
63
- oembed . _iframe . path = src . path ;
64
- oembed . _iframe . query = src . query ;
65
- oembed . _iframe . placeholder = oembed . thumbnail_url ;
66
- oembed . _iframe . replaceQuerystring = function ( params ) {
67
- var qs = querystring . stringify ( { ...oembed . _iframe . query , ...params } ) ;
68
- return oembed . _iframe . src . replace ( / \? .* $ / , '' ) + ( qs ? '?' + qs : '' ) ;
69
- }
70
- oembed . _iframe . assignQuerystring = function ( params ) {
71
- var qs = querystring . stringify ( params ) ;
72
- return oembed . _iframe . src . replace ( / \? .* $ / , '' ) + ( qs ? '?' + qs : '' ) ;
73
- }
68
+ if ( _iframe && _iframe . src ) {
69
+ var src = URL . parse ( _iframe . src , true ) ;
70
+ _iframe . host = src . host ;
71
+ _iframe . pathname = src . pathname ;
72
+ _iframe . path = src . path ;
73
+ _iframe . query = src . query ;
74
+ _iframe . replaceQuerystring = function ( params ) {
75
+ var qs = querystring . stringify ( { ..._iframe . query , ...params } ) ;
76
+ return _iframe . src . replace ( / \? .* $ / , '' ) + ( qs ? '?' + qs : '' ) ;
77
+ }
78
+ _iframe . assignQuerystring = function ( params ) {
79
+ var qs = querystring . stringify ( params ) ;
80
+ return oembed . _iframe . src . replace ( / \? .* $ / , '' ) + ( qs ? '?' + qs : '' ) ;
74
81
}
75
82
} else {
76
- oembed . _iframe = null ;
83
+ _iframe = null ;
77
84
}
78
- }
85
+
86
+ oembed . _iframe = { ..._iframe } ;
87
+ }
79
88
80
89
return oembed . _iframe ;
81
90
}
@@ -99,6 +108,8 @@ export default {
99
108
100
109
provides : [ 'self' , 'oembedError' ] ,
101
110
111
+ getIframe : _getOembedIframe , // available via export for fallbacks as plugins['oembed'].getIframe(obj)
112
+
102
113
getData : function ( url , oembedLinks , options , cb ) {
103
114
104
115
var href = oembedLinks [ 0 ] . href ;
0 commit comments