Class: OEmbed::Providers

Inherits:
Object
  • Object
show all
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:

  • To get the iframe embed code

    OEmbed::Providers::Youtube.endpoint += "?iframe=1"
    
  • To get the flash/object embed code

    OEmbed::Providers::Youtube.endpoint += "?iframe=0"
    
  • To require https embed code

    OEmbed::Providers::Youtube.endpoint += "?scheme=https"
    
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 =
OEmbed::Provider.new("http://lab.viddler.com/services/oembed/")
Qik =
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 =
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}")
Slideshare =

Provider for slideshare.net www.slideshare.net/developers/oembed

OEmbed::Provider.new("https://www.slideshare.net/api/oembed/2")
Yfrog =
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 =
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 =
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=#{my_embedly_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

Class Method Details

.fallbackObject

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, options = {})
  provider = find(url)
  if provider
    provider.get(url, options)
  else
    fallback.each do |p|
      return p.get(url, options) rescue OEmbed::Error
    end
    raise(OEmbed::NotFound)
  end
end

.raw(url, options = {}) ⇒ Object

Deprecated.

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, options = {})
  provider = find(url)
  if provider
    provider.raw(url, options)
  else
    fallback.each do |p|
      return p.raw(url, options) 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:



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_allObject

Unregister all currently-registered Provider instances.



62
63
64
65
# File 'lib/oembed/providers.rb', line 62

def unregister_all
  @@urls = {}
  @@fallback = []
end

.urlsObject

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