Class: OEmbed::Providers
- Inherits:
-
Object
- Object
- OEmbed::Providers
- Defined in:
- lib/oembed/providers.rb,
lib/oembed/providers/tiktok.rb,
lib/oembed/providers/spotify.rb,
lib/oembed/providers/instagram.rb,
lib/oembed/providers/matterport.rb,
lib/oembed/providers/facebook_post.rb,
lib/oembed/providers/facebook_video.rb,
lib/oembed/providers/builtin_providers.rb
Overview
Allows OEmbed to perform tasks across several, registered, Providers at once.
Constant Summary collapse
- TikTok =
Provider for tiktok.com See developers.tiktok.com/doc/embed-videos
OEmbed::Provider.new( "https://www.tiktok.com/oembed", format: :json )
- Spotify =
OEmbed::Provider.new( "https://open.spotify.com/oembed", format: :json )
- Instagram =
Provider for instagram.com See developers.facebook.com/docs/instagram/oembed/
OEmbed::Provider.new( "https://graph.facebook.com/v8.0/instagram_oembed", required_query_params: { access_token: 'OEMBED_FACEBOOK_TOKEN' }, format: :json )
- Matterport =
Provider for my.matterport.com
OEmbed::Provider.new( "https://my.matterport.com/api/v1/models/oembed/", format: :json )
- FacebookPost =
Provider for Facebook posts See developers.facebook.com/docs/plugins/oembed See developers.facebook.com/docs/graph-api/reference/v8.0/oembed-post
OEmbed::Provider.new( "https://graph.facebook.com/v8.0/oembed_post", required_query_params: { access_token: 'OEMBED_FACEBOOK_TOKEN' }, format: :json )
- FacebookVideo =
Provider for Facebook videos See developers.facebook.com/docs/plugins/oembed See developers.facebook.com/docs/graph-api/reference/v8.0/oembed-video
OEmbed::Provider.new( "https://graph.facebook.com/v8.0/oembed_video", required_query_params: { access_token: 'OEMBED_FACEBOOK_TOKEN' }, format: :json )
- 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", format: :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", format: :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", format: :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", format: :json)
- 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/", format: :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/", format: :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 =
{}
- @@access_token_setters =
{}
Class Method Summary collapse
-
.fallback ⇒ Object
Returns an array of all registerd fallback Provider instances.
-
.find(url) ⇒ Object
Returns a Provider instance whose 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.
77 78 79 |
# File 'lib/oembed/providers.rb', line 77 def fallback @@fallback end |
.find(url) ⇒ Object
Returns a Provider instance whose url scheme matches the given url. Skips any Provider with missing required_query_params.
83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/oembed/providers.rb', line 83 def find(url) @@urls.keys.each do |url_regexp| next unless url_regexp.match?(url) matching_provider = @@urls[url_regexp].detect { |p| p.include?(url) } # If we've found a matching provider, return it right away! return matching_provider if matching_provider end nil end |
.get(url, options = {}) ⇒ Object
Finds the appropriate Provider for this url and returns an OEmbed::Response, using Provider#get.
112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/oembed/providers.rb', line 112 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.
98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/oembed/providers.rb', line 98 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.
23 24 25 26 27 28 29 30 |
# File 'lib/oembed/providers.rb', line 23 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_tokens keys can be one of the following:
-
:facebook: See developers.facebook.com/docs/instagram/oembed#access-tokens
50 51 52 53 54 55 56 |
# File 'lib/oembed/providers.rb', line 50 def register_all(*including_sub_type, access_tokens: {}) register(*@@to_register[""]) including_sub_type.each do |sub_type| register(*@@to_register[sub_type.to_s]) end set_access_tokens(access_tokens) 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)
72 73 74 |
# File 'lib/oembed/providers.rb', line 72 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.
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/oembed/providers.rb', line 34 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.
59 60 61 62 |
# File 'lib/oembed/providers.rb', line 59 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.
17 18 19 |
# File 'lib/oembed/providers.rb', line 17 def urls @@urls end |