Class: OEmbed::Providers
- Inherits:
-
Object
- Object
- OEmbed::Providers
- Defined in:
- lib/oembed/providers.rb,
lib/oembed/providers/instagram.rb,
lib/oembed/providers/facebook_post.rb,
lib/oembed/providers/facebook_video.rb
Overview
Allows OEmbed to perform tasks across several, registered, Providers at once.
Defined Under Namespace
Classes: FacebookPost, FacebookVideo, Instagram
Constant Summary collapse
- Youtube =
Provider for youtube.com apiblog.youtube.com/2009/10/oembed-support.html
Options:
OEmbed::Provider.new("https://www.youtube.com/oembed/?scheme=https")
- CodePen =
Provider for codepen.io
OEmbed::Provider.new("https://codepen.io/api/oembed")
- Flickr =
Provider for flickr.com
OEmbed::Provider.new("https://www.flickr.com/services/oembed/")
- Viddler =
Provider for viddler.com developers.viddler.com/documentation/services/oembed/
OEmbed::Provider.new("http://lab.viddler.com/services/oembed/")
- Qik =
Provider for qik.com qik.com/blog/qik-embraces-oembed-for-embedding-videos/
OEmbed::Provider.new("http://qik.com/api/oembed.{format}")
- Revision3 =
Provider for revision3.com
OEmbed::Provider.new("http://revision3.com/api/oembed/")
- Hulu =
Provider for hulu.com
OEmbed::Provider.new("https://www.hulu.com/api/oembed.{format}")
- Vimeo =
Provider for vimeo.com developer.vimeo.com/apis/oembed
OEmbed::Provider.new("https://vimeo.com/api/oembed.{format}")
- Twitter =
Provider for twitter.com dev.twitter.com/rest/reference/get/statuses/oembed
OEmbed::Provider.new("https://publish.twitter.com/oembed", :json)
- Vine =
Provider for vine.co dev.twitter.com/web/vine/oembed
OEmbed::Provider.new("https://vine.co/oembed.{format}")
OEmbed::Provider.new("https://www.slideshare.net/api/oembed/2")
- Yfrog =
Provider for yfrog code.google.com/p/imageshackapi/wiki/OEMBEDSupport
OEmbed::Provider.new("https://www.yfrog.com/api/oembed", :json)
- Giphy =
Provider for Giphy
OEmbed::Provider.new("http://giphy.com/services/oembed")
- Imgur =
Provider for imgur.com
OEmbed::Provider.new("https://api.imgur.com/oembed.{format}")
- Kickstarter =
Provider for Kickstarter
OEmbed::Provider.new("https://www.kickstarter.com/services/oembed")
- MlgTv =
provider for mlg-tv tv.majorleaguegaming.com/oembed
OEmbed::Provider.new("http://tv.majorleaguegaming.com/oembed")
- PollEverywhere =
Provider for polleverywhere.com
OEmbed::Provider.new("http://www.polleverywhere.com/services/oembed/")
- MyOpera =
Provider for my.opera.com my.opera.com/devblog/blog/2008/12/02/embedding-my-opera-content-oembed
OEmbed::Provider.new("http://my.opera.com/service/oembed", :json)
- ClearspringWidgets =
Provider for clearspring.com
OEmbed::Provider.new("http://widgets.clearspring.com/widget/v1/oembed/")
- NFBCanada =
Provider for nfb.ca
OEmbed::Provider.new("http://www.nfb.ca/remote/services/oembed/")
- Scribd =
Provider for scribd.com
OEmbed::Provider.new("https://www.scribd.com/services/oembed")
- SpeakerDeck =
Provider for speakerdeck.com speakerdeck.com/faq#oembed
OEmbed::Provider.new("https://speakerdeck.com/oembed.json")
- MovieClips =
Provider for movieclips.com
OEmbed::Provider.new("http://movieclips.com/services/oembed/")
- TwentyThree =
Provider for 23hq.com
OEmbed::Provider.new("http://www.23hq.com/23/oembed")
- SoundCloud =
Provider for soundcloud.com developers.soundcloud.com/docs/oembed
OEmbed::Provider.new("https://soundcloud.com/oembed", :json)
- Spotify =
Provider for spotify.com twitter.com/nicklas2k/status/330094611202723840 blog.embed.ly/post/45149936446/oembed-for-spotify
OEmbed::Provider.new("https://embed.spotify.com/oembed/")
- Skitch =
Provider for skitch.com skitch.com/oembed/%3C/endpoint
OEmbed::Provider.new("http://skitch.com/oembed")
- Ted =
Provider for TED
OEmbed::Provider.new("https://www.ted.com/talks/oembed.{format}")
- Tumblr =
Provider for tumblr.com
OEmbed::Provider.new("http://www.tumblr.com/oembed/1.0/", :json)
- OohEmbed =
Provider for oohembed.com, which is a provider aggregator. See OEmbed::Providers::OohEmbed.urls for a full list of supported url schemas. Embed.ly has taken over the oohembed.com domain and as of July 20 all oohEmbed request will require you use an API key. For details on the transition see blog.embed.ly/oohembed
OEmbed::Provider.new("http://oohembed.com/oohembed/", :json)
- Noembed =
Provider for noembed.com, which is a provider aggregator. See OEmbed::Providers::Noembed.urls for a full list of supported url schemas. noembed.com/#supported-sites
OEmbed::Provider.new("https://noembed.com/embed")
- Embedly =
Provider for Embedly.com, which is a provider aggregator. See OEmbed::Providers::Embedly.urls for a full list of supported url schemas. embed.ly/docs/endpoints/1/oembed
You can append your Embed.ly API key to the provider so that all requests are signed
OEmbed::Providers::Embedly.endpoint += "?key=#{}"
If you don’t yet have an API key you’ll need to sign up here: embed.ly/pricing
OEmbed::Provider.new("http://api.embed.ly/1/oembed")
- @@urls =
{}
- @@fallback =
[]
- @@to_register =
{}
Class Method Summary collapse
-
.fallback ⇒ Object
Returns an array of all registerd fallback Provider instances.
-
.find(url) ⇒ Object
Returns a Provider instance who’s url scheme matches the given url.
-
.get(url, options = {}) ⇒ Object
Finds the appropriate Provider for this url and returns an OEmbed::Response, using Provider#get.
-
.raw(url, options = {}) ⇒ Object
deprecated
Deprecated.
Note: This method will be made private in the future.
-
.register(*providers) ⇒ Object
Given one ore more Provider instances, register their url schemes for future get calls.
-
.register_all(*including_sub_type, access_tokens: {}) ⇒ Object
Register all Providers built into this gem.
-
.register_fallback(*providers) ⇒ Object
Takes an array of Provider instances or ProviderDiscovery Use this method to register fallback providers.
-
.unregister(*providers) ⇒ Object
Given one ore more Provider instances, un-register their url schemes.
-
.unregister_all ⇒ Object
Unregister all currently-registered Provider instances.
-
.urls ⇒ Object
A Hash of all url schemes, where the keys represent schemes supported by all registered Provider instances and values are an Array of Providers that support that scheme.
Class Method Details
.fallback ⇒ Object
Returns an array of all registerd fallback Provider instances.
80 81 82 |
# File 'lib/oembed/providers.rb', line 80 def fallback @@fallback end |
.find(url) ⇒ Object
Returns a Provider instance who’s url scheme matches the given url.
85 86 87 88 |
# File 'lib/oembed/providers.rb', line 85 def find(url) providers = @@urls[@@urls.keys.detect { |u| u =~ url }] Array(providers).first || nil end |
.get(url, options = {}) ⇒ Object
Finds the appropriate Provider for this url and returns an OEmbed::Response, using Provider#get.
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/oembed/providers.rb', line 106 def get(url, = {}) provider = find(url) if provider provider.get(url, ) else fallback.each do |p| return p.get(url, ) rescue OEmbed::Error end raise(OEmbed::NotFound) end end |
.raw(url, options = {}) ⇒ Object
Note: This method will be made private in the future.
Finds the appropriate Provider for this url and return the raw response.
92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/oembed/providers.rb', line 92 def raw(url, = {}) provider = find(url) if provider provider.raw(url, ) else fallback.each do |p| return p.raw(url, ) rescue OEmbed::Error end raise(OEmbed::NotFound) end end |
.register(*providers) ⇒ Object
Given one ore more Provider instances, register their url schemes for future get calls.
26 27 28 29 30 31 32 33 |
# File 'lib/oembed/providers.rb', line 26 def register(*providers) providers.each do |provider| provider.urls.each do |url| @@urls[url] ||= [] @@urls[url] << provider end end end |
.register_all(*including_sub_type, access_tokens: {}) ⇒ Object
Register all Providers built into this gem. The including_sub_type parameter should be one of the following values:
-
:aggregators: also register provider aggregator endpoints, like Embedly
The access_token keys can be one of the following:
-
:facebook: See developers.facebook.com/docs/instagram/oembed#access-tokens
53 54 55 56 57 58 59 |
# File 'lib/oembed/providers.rb', line 53 def register_all(*including_sub_type, access_tokens: {}) register(*@@to_register[""]) register_access_token_providers(access_tokens) including_sub_type.each do |sub_type| register(*@@to_register[sub_type.to_s]) end end |
.register_fallback(*providers) ⇒ Object
Takes an array of Provider instances or ProviderDiscovery Use this method to register fallback providers. When the raw or get methods are called, if the URL doesn’t match any of the registerd url patters the fallback providers will be called (in order) with the URL.
A common example:
OEmbed::Providers.register_fallback(OEmbed::ProviderDiscovery, OEmbed::Providers::Noembed)
75 76 77 |
# File 'lib/oembed/providers.rb', line 75 def register_fallback(*providers) @@fallback += providers end |
.unregister(*providers) ⇒ Object
Given one ore more Provider instances, un-register their url schemes. Future get calls will not use these Providers.
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/oembed/providers.rb', line 37 def unregister(*providers) providers.each do |provider| provider.urls.each do |url| if @@urls[url].is_a?(Array) @@urls[url].delete(provider) @@urls.delete(url) if @@urls[url].empty? end end end end |
.unregister_all ⇒ Object
Unregister all currently-registered Provider instances.
62 63 64 65 |
# File 'lib/oembed/providers.rb', line 62 def unregister_all @@urls = {} @@fallback = [] end |
.urls ⇒ Object
A Hash of all url schemes, where the keys represent schemes supported by all registered Provider instances and values are an Array of Providers that support that scheme.
20 21 22 |
# File 'lib/oembed/providers.rb', line 20 def urls @@urls end |