ruby-oembed 0.9.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +5 -3
- data/CHANGELOG.rdoc +7 -0
- data/Gemfile +6 -0
- data/Guardfile +35 -0
- data/README.rdoc +3 -1
- data/lib/oembed/formatter/base.rb +27 -24
- data/lib/oembed/formatter/json/backends/jsongem.rb +4 -4
- data/lib/oembed/http_helper.rb +2 -0
- data/lib/oembed/provider_discovery.rb +4 -4
- data/lib/oembed/providers/embedly_urls.yml +26 -17
- data/lib/oembed/providers.rb +25 -0
- data/lib/oembed/version.rb +1 -1
- data/spec/cassettes/OEmbed_ProviderDiscovery.yml +21625 -0
- data/spec/formatter/json/jsongem_backend_spec.rb +22 -10
- data/spec/provider_discovery_spec.rb +81 -65
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 157ea3df0d0f3d89bc48f062c3db9825d1a2b381
|
4
|
+
data.tar.gz: 83c9d7ed8298497fa8d58451977e0605475abd51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3da1c0b22069ff15ae39153c2fc7efc3a249e26564ab86577f2ecd58707312187f777882b125e7e6d98cbb9568314545cfaff833f4e6f1decabdd117cc9001dc
|
7
|
+
data.tar.gz: 578994a5dea31536fdd73a09a6cbc1a37f1b47e49a0dfaaf769a8406ec4eb4e7e81414dbe0e50e68cdd9f9f626fd62d113dc7e02f5cd39589e4f0e21fae3b24d
|
data/.travis.yml
CHANGED
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
= CHANGELOG
|
2
2
|
|
3
|
+
== 0.10.0 - 6 March 2016
|
4
|
+
|
5
|
+
* Add built-in Tumblr provider; Pull #55 (unknown)
|
6
|
+
* Add bulit-in FacebookPost and FacebookVideo providers; Pull #54 (John Crowe)
|
7
|
+
* Change ProviderDiscovery.discover_provider to better find tags on some sites; Issue #56 + Pull #57 (Marcos Wright-Kuhns)
|
8
|
+
* Updated the list of {Embedly}[http://embed.ly] URL schemes. (Marcos Wright-Kuhns)
|
9
|
+
|
3
10
|
== 0.9.0 - 12 December 2015
|
4
11
|
|
5
12
|
* Add support for HTTP redirects in ProviderDiscovery; Pull #39 (Sebastian de Castelberg) and Pull #38 (Sven Schwyn)
|
data/Gemfile
CHANGED
data/Guardfile
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
guard "bundler" do
|
2
|
+
watch("Gemfile")
|
3
|
+
end
|
4
|
+
|
5
|
+
group :red_green_refactor, :halt_on_fail => true do
|
6
|
+
guard "rspec", :cmd => "bundle exec rspec" do
|
7
|
+
watch(%r{^spec/.+_spec\.rb$})
|
8
|
+
watch(%r{^spec/cassettes/.+.yml$}) { "spec" }
|
9
|
+
watch(%r{^lib/(.+)\.rb$}) do |m|
|
10
|
+
# Split up the file path into an Array
|
11
|
+
path_parts = []
|
12
|
+
remaining_path = m[1]
|
13
|
+
while File.dirname(remaining_path) != '.'
|
14
|
+
remaining_path, file = File.split(remaining_path)
|
15
|
+
path_parts << file
|
16
|
+
end
|
17
|
+
path_parts << remaining_path
|
18
|
+
path_parts.reverse!
|
19
|
+
|
20
|
+
# Specs don't contain an oembed subdir
|
21
|
+
path_parts.shift
|
22
|
+
# Special case for formatter specs
|
23
|
+
if path_parts.include?('formatter') && path_parts.include?('backends')
|
24
|
+
path_parts.delete('backends')
|
25
|
+
path_parts.last.gsub!(/$/, "_backend")
|
26
|
+
end
|
27
|
+
# Add on the _spec.rb postfix
|
28
|
+
path_parts.last.gsub!(/$/, "_spec.rb")
|
29
|
+
|
30
|
+
f = File.join("spec", *path_parts)
|
31
|
+
puts "#{m.inspect} => #{f.inspect}"
|
32
|
+
f
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/README.rdoc
CHANGED
@@ -48,7 +48,7 @@ This library works wonderfully on its own, but can get a speed boost by using 3r
|
|
48
48
|
require 'json'
|
49
49
|
require 'xmlsimple'
|
50
50
|
require 'oembed'
|
51
|
-
|
51
|
+
|
52
52
|
OEmbed::Formatter::JSON.backend #=> OEmbed::Formatter::JSON::Backends::JSONGem
|
53
53
|
OEmbed::Formatter::XML.backend #=> OEmbed::Formatter::XML::Backends::XmlSimple
|
54
54
|
|
@@ -69,6 +69,8 @@ Code for the ruby-oembed library is {hosted on GitHub}[https://github.com/judofy
|
|
69
69
|
bundle install
|
70
70
|
# Run the tests.
|
71
71
|
bundle exec rake
|
72
|
+
# or run the test continually
|
73
|
+
bundle exec guard
|
72
74
|
|
73
75
|
If you encounter any bug, feel free to {create an Issue}[https://github.com/judofyr/ruby-oembed/issues].
|
74
76
|
|
@@ -3,17 +3,17 @@ module OEmbed
|
|
3
3
|
# These are methods that are shared by the OEmbed::Formatter sub-classes
|
4
4
|
# (i.e. OEmbed::Formatter:JSON and OEmbed::Formatter::XML).
|
5
5
|
module Base
|
6
|
-
|
6
|
+
|
7
7
|
# Returns true if there is a valid backend. Otherwise, raises OEmbed::FormatNotSupported
|
8
8
|
def supported?
|
9
9
|
!!backend
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
# Parses a String or IO and convert it into an Object
|
13
13
|
def decode(value)
|
14
14
|
backend.decode(value)
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
# Given either a String (the name of the backend to use) or an Object (which
|
18
18
|
# must respond to the decode method), sets the current backend. Raises a LoadError
|
19
19
|
# if the given backend cannot be loaded (e.g. an invalid String name, or the
|
@@ -23,29 +23,22 @@ module OEmbed
|
|
23
23
|
def backend=(new_backend)
|
24
24
|
new_backend_obj = case new_backend
|
25
25
|
when String
|
26
|
-
|
27
|
-
|
28
|
-
already_required = self::Backends.const_defined?(new_backend, false)
|
29
|
-
rescue ArgumentError # we're dealing with ruby < 1.9 where const_defined? only takes 1 argument, but behaves the way we want it to.
|
30
|
-
already_required = self::Backends.const_defined?(new_backend)
|
31
|
-
rescue NameError # no backends have been loaded yet
|
32
|
-
already_required = false
|
26
|
+
unless already_loaded?(new_backend)
|
27
|
+
load "oembed/formatter/#{backend_path}/#{new_backend.downcase}.rb"
|
33
28
|
end
|
34
|
-
|
35
|
-
require "oembed/formatter/#{backend_path}/#{new_backend.downcase}" unless already_required
|
36
29
|
self::Backends.const_get(new_backend)
|
37
30
|
else
|
38
31
|
new_backend
|
39
32
|
end
|
40
|
-
|
33
|
+
|
41
34
|
test_backend(new_backend_obj)
|
42
|
-
|
35
|
+
|
43
36
|
@backend = new_backend_obj
|
44
|
-
|
37
|
+
|
45
38
|
rescue
|
46
39
|
raise LoadError, "There was an error setting the backend: #{new_backend.inspect} - #{$!.message}"
|
47
40
|
end
|
48
|
-
|
41
|
+
|
49
42
|
# Perform a set of operations using a backend other than the current one.
|
50
43
|
# OEmbed::Formatter::XML.with_backend('XmlSimple') do
|
51
44
|
# OEmbed::Formatter::XML.decode(xml_value)
|
@@ -56,23 +49,23 @@ module OEmbed
|
|
56
49
|
ensure
|
57
50
|
self.backend = old_backend
|
58
51
|
end
|
59
|
-
|
52
|
+
|
60
53
|
private
|
61
|
-
|
54
|
+
|
62
55
|
# Makes sure the given backend can correctly parse values using the decode
|
63
56
|
# method.
|
64
57
|
def test_backend(new_backend)
|
65
58
|
raise LoadError, "The given backend must respond to the decode method: #{new_backend.inspect}" unless new_backend.respond_to?(:decode)
|
66
|
-
|
59
|
+
|
67
60
|
expected = {
|
68
61
|
"version"=>1.0,
|
69
62
|
"string"=>"test",
|
70
63
|
"int"=>42,
|
71
64
|
"html"=>"<i>Cool's</i>\n the \"word\"!",
|
72
65
|
}
|
73
|
-
|
66
|
+
|
74
67
|
actual = new_backend.decode(test_value)
|
75
|
-
|
68
|
+
|
76
69
|
# For the test to be true the actual output Hash should have the
|
77
70
|
# exact same list of keys _and_ the values should be the same
|
78
71
|
# if we ignoring typecasting.
|
@@ -85,13 +78,23 @@ module OEmbed
|
|
85
78
|
raise LoadError, "#{msg}: #{new_backend.inspect}"
|
86
79
|
end
|
87
80
|
end
|
88
|
-
|
81
|
+
|
82
|
+
def already_loaded?(new_backend)
|
83
|
+
begin
|
84
|
+
self::Backends.const_defined?(new_backend, false)
|
85
|
+
rescue ArgumentError # we're dealing with ruby < 1.9 where const_defined? only takes 1 argument, but behaves the way we want it to.
|
86
|
+
self::Backends.const_defined?(new_backend)
|
87
|
+
rescue NameError # no backends have been loaded yet
|
88
|
+
false
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
89
92
|
# Must return a String representing the sub-directory where in-library
|
90
93
|
# backend rb files live (e.g. 'json/backends')
|
91
94
|
def backend_path
|
92
95
|
raise "This method must be defined by a format-specific OEmbed::Formatter sub-class."
|
93
96
|
end
|
94
|
-
|
97
|
+
|
95
98
|
# Must return a String that when parsed by a backend returns the following ruby Hash
|
96
99
|
# {
|
97
100
|
# "version"=>1.0,
|
@@ -102,7 +105,7 @@ module OEmbed
|
|
102
105
|
def test_value
|
103
106
|
raise "This method must be defined by a format-specific OEmbed::Formatter sub-class."
|
104
107
|
end
|
105
|
-
|
108
|
+
|
106
109
|
end # SharedMethods
|
107
110
|
end
|
108
111
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Only allow this backend the json gem is already loaded
|
2
|
-
raise LoadError, "The json library isn't available. require 'json'" unless
|
2
|
+
raise LoadError, "The json library isn't available. require 'json'" unless Object.const_defined?('JSON')
|
3
3
|
|
4
4
|
module OEmbed
|
5
5
|
module Formatter
|
@@ -15,15 +15,15 @@ module OEmbed
|
|
15
15
|
end
|
16
16
|
::JSON.parse(json)
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def decode_fail_msg
|
20
20
|
"The version of the json library you have installed isn't parsing JSON like ruby-oembed expected."
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def parse_error
|
24
24
|
::JSON::ParserError
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
data/lib/oembed/http_helper.rb
CHANGED
@@ -37,15 +37,15 @@ module OEmbed
|
|
37
37
|
format = options[:format]
|
38
38
|
|
39
39
|
if format.nil? || format == :json
|
40
|
-
provider_endpoint ||= /<link
|
41
|
-
provider_endpoint ||= /<link
|
40
|
+
provider_endpoint ||= /<link[^>]*href=['"]*([^\s'"]+)['"]*[^>]*application\/json\+oembed[^>]*>/.match(res)[1] rescue nil
|
41
|
+
provider_endpoint ||= /<link[^>]*application\/json\+oembed[^>]*href=['"]*([^\s'"]+)['"]*[^>]*>/.match(res)[1] rescue nil
|
42
42
|
format ||= :json if provider_endpoint
|
43
43
|
end
|
44
44
|
if format.nil? || format == :xml
|
45
45
|
# {The specification}[http://oembed.com/#section4] says XML discovery should have
|
46
46
|
# type="text/xml+oembed" but some providers use type="application/xml+oembed"
|
47
|
-
provider_endpoint ||= /<link
|
48
|
-
provider_endpoint ||= /<link
|
47
|
+
provider_endpoint ||= /<link[^>]*href=['"]*([^\s'"]+)['"]*[^>]*(application|text)\/xml\+oembed[^>]*>/.match(res)[1] rescue nil
|
48
|
+
provider_endpoint ||= /<link[^>]*(application|text)\/xml\+oembed[^>]*href=['"]*([^\s'"]+)['"]*[^>]*>/.match(res)[2] rescue nil
|
49
49
|
format ||= :xml if provider_endpoint
|
50
50
|
end
|
51
51
|
|
@@ -94,6 +94,7 @@
|
|
94
94
|
- http://alpha.vrchive.com/*
|
95
95
|
- http://alphahat.com/view/*
|
96
96
|
- http://amzn.com/*
|
97
|
+
- http://anchor.fm/*
|
97
98
|
- http://aniboom.com/animation-video/*
|
98
99
|
- http://animal.discovery.com/videos/*
|
99
100
|
- http://animoto.com/play/*
|
@@ -118,8 +119,6 @@
|
|
118
119
|
- http://behance.net/gallery/*
|
119
120
|
- http://beta-sliderocket.com/*
|
120
121
|
- http://beta.polstir.com/*/*
|
121
|
-
- http://bigthink.com/ideas/*
|
122
|
-
- http://bigthink.com/series/*
|
123
122
|
- http://blab.im/*
|
124
123
|
- http://blip.tv/*/*
|
125
124
|
- http://boo.fm/b*
|
@@ -131,6 +130,7 @@
|
|
131
130
|
- http://bravotv.com/*/*/videos/*
|
132
131
|
- http://break.com/*/*
|
133
132
|
- http://bubb.li/*
|
133
|
+
- http://bumpers.fm/e/*
|
134
134
|
- http://bunkrapp.com/*/*
|
135
135
|
- http://calameo.com/*
|
136
136
|
- http://canalplus.fr/*
|
@@ -154,6 +154,7 @@
|
|
154
154
|
- http://collegehumor.com/video:*
|
155
155
|
- http://confreaks.com/videos/*
|
156
156
|
- http://confreaks.net/videos/*
|
157
|
+
- http://content.newsbound.com/*/*
|
157
158
|
- http://coub.com/embed/*
|
158
159
|
- http://coub.com/view/*
|
159
160
|
- http://crocodoc.com/*
|
@@ -163,6 +164,7 @@
|
|
163
164
|
- http://dashboard.minoto-video.com/main/video/details/*
|
164
165
|
- http://distrify.com/film/*
|
165
166
|
- http://dnbradio.com/*
|
167
|
+
- http://docs.com/*
|
166
168
|
- http://dotsub.com/view/*
|
167
169
|
- http://drbl.in/*
|
168
170
|
- http://dreambroker.com/channel/*
|
@@ -173,7 +175,7 @@
|
|
173
175
|
- http://embed.minoto-video.com/*
|
174
176
|
- http://espn.go.com/*/story*
|
175
177
|
- http://espn.go.com/video/clip*
|
176
|
-
- http://etsy.com
|
178
|
+
- http://etsy.com/*
|
177
179
|
- http://fav.me/*
|
178
180
|
- http://fb.com
|
179
181
|
- http://fb.me/*
|
@@ -301,9 +303,6 @@
|
|
301
303
|
- http://pastie.org/*
|
302
304
|
- http://photozou.jp/photo/photo_only/*/*
|
303
305
|
- http://photozou.jp/photo/show/*/*
|
304
|
-
- http://picasaweb.google.com*/*/*
|
305
|
-
- http://picasaweb.google.com*/*/*#*
|
306
|
-
- http://picasaweb.google.com*/lh/photo/*
|
307
306
|
- http://pics.lockerz.com/s/*
|
308
307
|
- http://pikchur.com/*
|
309
308
|
- http://pixorial.com/watch/*
|
@@ -344,7 +343,7 @@
|
|
344
343
|
- http://redux.com/stream/item/*/*
|
345
344
|
- http://relayto.com/*
|
346
345
|
- http://reuters.com/video/*
|
347
|
-
- http://
|
346
|
+
- http://rocketium.com/*
|
348
347
|
- http://s*.photobucket.com/albums/*
|
349
348
|
- http://say.ly/*
|
350
349
|
- http://science.discovery.com/videos/*
|
@@ -360,7 +359,7 @@
|
|
360
359
|
- http://sendables.jibjab.com/view/*
|
361
360
|
- http://sendvid.com/*
|
362
361
|
- http://shoplocket.com/products/*
|
363
|
-
- http://shorti.
|
362
|
+
- http://shorti.com/*
|
364
363
|
- http://showme.com/sh/*
|
365
364
|
- http://siteanalytics.compete.com/*
|
366
365
|
- http://skitch.com/*/*/*
|
@@ -413,6 +412,7 @@
|
|
413
412
|
- http://twitpic.com/photos/*
|
414
413
|
- http://twitrpix.com/*
|
415
414
|
- http://ustre.am/*
|
415
|
+
- http://v.embedly.com/*
|
416
416
|
- http://v.youku.com/v_playlist/*
|
417
417
|
- http://v.youku.com/v_show/*
|
418
418
|
- http://veoh.com/watch/*
|
@@ -434,6 +434,7 @@
|
|
434
434
|
- http://videodonor.com/video/*
|
435
435
|
- http://videos.nymag.com/*
|
436
436
|
- http://vids.myspace.com/index.cfm?fuseaction=vids.individual&videoid*
|
437
|
+
- http://view.stacker.cc/*
|
437
438
|
- http://vimeo.com/*
|
438
439
|
- http://vimeo.com/groups/*/videos/*
|
439
440
|
- http://vimeo.com/m/#/*
|
@@ -499,7 +500,7 @@
|
|
499
500
|
- http://www.dailymile.com/people/*/entries/*
|
500
501
|
- http://www.dnbradio.com/*
|
501
502
|
- http://www.dreambroker.com/channel/*
|
502
|
-
- http://www.etsy.com
|
503
|
+
- http://www.etsy.com/*
|
503
504
|
- http://www.eyeem.com/a/*
|
504
505
|
- http://www.eyeem.com/p/*
|
505
506
|
- http://www.eyeem.com/u/*
|
@@ -609,7 +610,6 @@
|
|
609
610
|
- http://www.quora.com/*/answer/*
|
610
611
|
- http://www.qwantz.com/index.php?comic=*
|
611
612
|
- http://www.qwiki.com/q/*
|
612
|
-
- http://www.qzzr.com/quiz/*
|
613
613
|
- http://www.radioreddit.com/?q=songs*
|
614
614
|
- http://www.radioreddit.com/songs*
|
615
615
|
- http://www.rdio.com/#/artist/*/album/*
|
@@ -618,7 +618,6 @@
|
|
618
618
|
- http://www.redux.com/stream/item/*/*
|
619
619
|
- http://www.relayto.com/*
|
620
620
|
- http://www.reuters.com/video/*
|
621
|
-
- http://www.reuters.com/video/*
|
622
621
|
- http://www.rts.ch/play/tv/*
|
623
622
|
- http://www.saynow.com/playMsg.html*
|
624
623
|
- http://www.saynow.com/playMsg.html*
|
@@ -640,7 +639,7 @@
|
|
640
639
|
- http://www.shopstyle.com/action/apiVisitRetailer*
|
641
640
|
- http://www.shopstyle.com/action/viewLook*
|
642
641
|
- http://www.shopstyle.com/browse*
|
643
|
-
- http://www.shorti.
|
642
|
+
- http://www.shorti.com/*
|
644
643
|
- http://www.showme.com/sh/*
|
645
644
|
- http://www.sliderocket.com/*
|
646
645
|
- http://www.slideshare.net/*/*
|
@@ -678,6 +677,7 @@
|
|
678
677
|
- http://www.tinypic.com/player.php*
|
679
678
|
- http://www.tinypic.com/r/*/*
|
680
679
|
- http://www.tinypic.com/view.php*
|
680
|
+
- http://www.touchcast.com/*/*
|
681
681
|
- http://www.traileraddict.com/clip/*
|
682
682
|
- http://www.traileraddict.com/poster/*
|
683
683
|
- http://www.traileraddict.com/trailer/*
|
@@ -768,10 +768,13 @@
|
|
768
768
|
- https://*youtube.com/watch*
|
769
769
|
- https://23video.com/*
|
770
770
|
- https://accredible.com/*
|
771
|
+
- https://airtable.com/shr*
|
771
772
|
- https://alpha.vrchive.com/*
|
773
|
+
- https://anchor.fm/*
|
772
774
|
- https://animoto.com/play/*
|
773
775
|
- https://api.lovelive.tv/v1/*
|
774
776
|
- https://app.devhv.com/oembed/*
|
777
|
+
- https://app.ilosvideos.com/view/*
|
775
778
|
- https://app.stghv.com/*
|
776
779
|
- https://app.videocheckout.com/embed/*
|
777
780
|
- https://app.wistia.com/embed/medias/*
|
@@ -781,6 +784,7 @@
|
|
781
784
|
- https://bop.fm/s/*/*
|
782
785
|
- https://brainshark.com/*/*
|
783
786
|
- https://brainsonic.com/*
|
787
|
+
- https://bumpers.fm/e/*
|
784
788
|
- https://bunkrapp.com/*/*
|
785
789
|
- https://calameo.com/*
|
786
790
|
- https://chirb.it/*
|
@@ -792,10 +796,13 @@
|
|
792
796
|
- https://clyp.it/*
|
793
797
|
- https://codepicnic.com/bites/*
|
794
798
|
- https://codepicnic.com/consoles/*
|
799
|
+
- https://content.newsbound.com/*/*
|
795
800
|
- https://coub.com/embed/*
|
796
801
|
- https://coub.com/view/*
|
797
802
|
- https://crocodoc.com/*
|
803
|
+
- https://docs.com/*
|
798
804
|
- https://dreambroker.com/channel/*
|
805
|
+
- https://etsy.com/*
|
799
806
|
- https://fb.me/*
|
800
807
|
- https://flowvella.com/s/*
|
801
808
|
- https://foursquare.com/*
|
@@ -835,9 +842,6 @@
|
|
835
842
|
- https://newhive.com/*/*
|
836
843
|
- https://open.spotify.com/*
|
837
844
|
- https://oumy.com/v/*
|
838
|
-
- https://picasaweb.google.com*/*/*
|
839
|
-
- https://picasaweb.google.com*/*/*#*
|
840
|
-
- https://picasaweb.google.com*/lh/photo/*
|
841
845
|
- https://play.spotify.com/*
|
842
846
|
- https://player.videopath.com/*
|
843
847
|
- https://player.vimeo.com/*
|
@@ -847,12 +851,15 @@
|
|
847
851
|
- https://portfolium.com/entry/*
|
848
852
|
- https://projects.invisionapp.com/share/*
|
849
853
|
- https://public.chartblocks.com/c/*
|
854
|
+
- https://publicgood.com/campaign/*
|
850
855
|
- https://publons.com/author/*
|
851
856
|
- https://quora.com/*/answer/*
|
857
|
+
- https://qwip.it/watch/*
|
852
858
|
- https://rapidengage.com/s/*
|
853
859
|
- https://readtapestry.com/s/*/
|
854
860
|
- https://reelhouse.org/*
|
855
861
|
- https://relayto.com/*
|
862
|
+
- https://rocketium.com/*
|
856
863
|
- https://screen.yahoo.com/*/*
|
857
864
|
- https://scribblemaps.com/maps/view/*/*
|
858
865
|
- https://sendvid.com/*
|
@@ -870,18 +877,19 @@
|
|
870
877
|
- https://storify.com/*/*
|
871
878
|
- https://streamable.com/*
|
872
879
|
- https://streamio.com/api/v1/*
|
880
|
+
- https://sway.com/*
|
873
881
|
- https://tr.instela.com/*
|
874
882
|
- https://tun.in/*
|
875
883
|
- https://tunein.com/*
|
876
884
|
- https://uploadly.com/*
|
877
885
|
- https://urtak.com/clr/*
|
878
886
|
- https://urtak.com/u/*
|
887
|
+
- https://v.embedly.com/*
|
879
888
|
- https://vid.me/*
|
880
889
|
- https://vidd.me/*
|
881
890
|
- https://video.esri.com/*
|
882
891
|
- https://video214.com/play/*
|
883
892
|
- https://view.stacker.cc/*
|
884
|
-
- https://view.stacker.cc/*
|
885
893
|
- https://vimeo.com/*
|
886
894
|
- https://vine.co/v/*
|
887
895
|
- https://w.graphiq.com/w/*
|
@@ -893,6 +901,7 @@
|
|
893
901
|
- https://www.calameo.com/*
|
894
902
|
- https://www.clippituser.tv/*
|
895
903
|
- https://www.dreambroker.com/channel/*
|
904
|
+
- https://www.etsy.com/*
|
896
905
|
- https://www.facebook.com/*/photos/*
|
897
906
|
- https://www.facebook.com/*/posts/*
|
898
907
|
- https://www.facebook.com/*/videos/*
|
@@ -913,11 +922,11 @@
|
|
913
922
|
- https://www.oumy.com/v/*
|
914
923
|
- https://www.publons.com/author/*
|
915
924
|
- https://www.quora.com/*/answer/*
|
916
|
-
- https://www.qzzr.com/quiz/*
|
917
925
|
- https://www.reelhouse.org/*
|
918
926
|
- https://www.relayto.com/*
|
919
927
|
- https://www.scribblemaps.com/maps/view/*/*
|
920
928
|
- https://www.streamio.com/api/v1/*
|
929
|
+
- https://www.vibby.com/watch*
|
921
930
|
- https://www.vimeo.com/*
|
922
931
|
- https://www.vine.co/v/*
|
923
932
|
- https://www.wedgies.com/question/*
|
data/lib/oembed/providers.rb
CHANGED
@@ -205,6 +205,25 @@ module OEmbed
|
|
205
205
|
Instagram << "https://www.instagram.com/p/*"
|
206
206
|
add_official_provider(Instagram)
|
207
207
|
|
208
|
+
# Providers for Facebook Posts & Videos
|
209
|
+
# https://developers.facebook.com/docs/plugins/oembed-endpoints
|
210
|
+
FacebookPost = OEmbed::Provider.new('https://www.facebook.com/plugins/post/oembed.json/', :json)
|
211
|
+
FacebookPost << 'https://www.facebook.com/*/posts/*'
|
212
|
+
FacebookPost << 'https://www.facebook.com/*/activity/*'
|
213
|
+
FacebookPost << 'https://www.facebook.com/photo*'
|
214
|
+
FacebookPost << 'https://www.facebook.com/photos*'
|
215
|
+
FacebookPost << 'https://www.facebook.com/*/photos*'
|
216
|
+
FacebookPost << 'https://www.facebook.com/permalink*'
|
217
|
+
FacebookPost << 'https://www.facebook.com/media*'
|
218
|
+
FacebookPost << 'https://www.facebook.com/questions*'
|
219
|
+
FacebookPost << 'https://www.facebook.com/notes*'
|
220
|
+
add_official_provider(FacebookPost)
|
221
|
+
|
222
|
+
FacebookVideo = OEmbed::Provider.new('https://www.facebook.com/plugins/video/oembed.json/', :json)
|
223
|
+
FacebookVideo << 'https://www.facebook.com/*/videos/*'
|
224
|
+
FacebookVideo << 'https://www.facebook.com/video*'
|
225
|
+
add_official_provider(FacebookVideo)
|
226
|
+
|
208
227
|
# Provider for slideshare.net
|
209
228
|
# http://www.slideshare.net/developers/oembed
|
210
229
|
Slideshare = OEmbed::Provider.new("https://www.slideshare.net/api/oembed/2")
|
@@ -299,6 +318,12 @@ module OEmbed
|
|
299
318
|
Skitch << "https://*.skitch.com/*"
|
300
319
|
add_official_provider(Skitch)
|
301
320
|
|
321
|
+
# Provider for tumblr.com
|
322
|
+
Tumblr = OEmbed::Provider.new("http://www.tumblr.com/oembed/1.0/", :json)
|
323
|
+
Tumblr << "http://*.tumblr.com/post/*"
|
324
|
+
Tumblr << "https://*.tumblr.com/post/*"
|
325
|
+
add_official_provider(Tumblr)
|
326
|
+
|
302
327
|
## Provider for clikthrough.com
|
303
328
|
# http://corporate.clikthrough.com/wp/?p=275
|
304
329
|
#Clickthrough = OEmbed::Provider.new("http://www.clikthrough.com/services/oembed/")
|