ruby-oembed 0.14.1 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/CHANGELOG.rdoc +13 -1
- data/lib/oembed.rb +1 -0
- data/lib/oembed/provider.rb +54 -5
- data/lib/oembed/providers.rb +39 -300
- data/lib/oembed/providers/aggregators/embedly_urls.yml +167 -6
- data/lib/oembed/providers/builtin_providers.rb +292 -0
- data/lib/oembed/providers/facebook_post.rb +27 -17
- data/lib/oembed/providers/facebook_video.rb +22 -10
- data/lib/oembed/providers/instagram.rb +37 -20
- data/lib/oembed/providers/tik_tok.rb +11 -0
- data/lib/oembed/version.rb +2 -2
- data/spec/cassettes/OEmbed_Provider.yml +117 -16
- data/spec/cassettes/OEmbed_Providers_CodePen.yml +177 -0
- data/spec/cassettes/OEmbed_Providers_FacebookPost.yml +539 -0
- data/spec/cassettes/OEmbed_Providers_FacebookVideo.yml +267 -0
- data/spec/cassettes/OEmbed_Providers_Instagram.yml +1473 -0
- data/spec/cassettes/OEmbed_Providers_Slideshare.yml +420 -834
- data/spec/cassettes/OEmbed_Providers_TikTok.yml +293 -0
- data/spec/cassettes/OEmbed_Providers_Twitter.yml +84 -357
- data/spec/cassettes/OEmbed_Providers_Youtube.yml +188 -26
- data/spec/provider_spec.rb +315 -138
- data/spec/providers/code_pen_spec.rb +21 -0
- data/spec/providers/facebook_post_spec.rb +54 -0
- data/spec/providers/facebook_video_spec.rb +48 -0
- data/spec/providers/instagram_spec.rb +48 -0
- data/spec/providers/slideshare_spec.rb +2 -9
- data/spec/providers/tik_tok_spec.rb +26 -0
- data/spec/providers/twitter_spec.rb +3 -10
- data/spec/providers/youtube_spec.rb +3 -9
- data/spec/providers_spec.rb +151 -16
- data/spec/response_spec.rb +2 -2
- data/spec/spec_helper.rb +19 -1
- data/spec/support/shared_examples_for_providers.rb +32 -20
- metadata +25 -5
- data/spec/providers/facebook_spec.rb +0 -50
data/spec/response_spec.rb
CHANGED
@@ -36,14 +36,14 @@ describe OEmbed::Response do
|
|
36
36
|
}
|
37
37
|
|
38
38
|
let(:qik) {
|
39
|
-
qik = OEmbed::Provider.new("http://qik.com/api/oembed.{format}", :xml)
|
39
|
+
qik = OEmbed::Provider.new("http://qik.com/api/oembed.{format}", format: :xml)
|
40
40
|
qik << "http://qik.com/video/*"
|
41
41
|
qik << "http://qik.com/*"
|
42
42
|
qik
|
43
43
|
}
|
44
44
|
|
45
45
|
let(:viddler) {
|
46
|
-
viddler = OEmbed::Provider.new("http://lab.viddler.com/services/oembed/", :json)
|
46
|
+
viddler = OEmbed::Provider.new("http://lab.viddler.com/services/oembed/", format: :json)
|
47
47
|
viddler << "http://*.viddler.com/*"
|
48
48
|
viddler
|
49
49
|
}
|
data/spec/spec_helper.rb
CHANGED
@@ -1,16 +1,27 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
3
|
require 'vcr'
|
4
|
-
VCR.
|
4
|
+
VCR.configure do |c|
|
5
5
|
c.default_cassette_options = { :record => :new_episodes }
|
6
6
|
c.cassette_library_dir = 'spec/cassettes'
|
7
7
|
c.hook_into :webmock
|
8
|
+
# Try to prevent a real-world Facebook token from being recorded by VCR
|
9
|
+
if ENV['OEMBED_FACEBOOK_TOKEN'] && !ENV['OEMBED_FACEBOOK_TOKEN'].to_s.empty?
|
10
|
+
c.filter_sensitive_data('A_FAKE_TOKEN_FOR_TESTS') { ENV['OEMBED_FACEBOOK_TOKEN'] }
|
11
|
+
c.filter_sensitive_data('A_FAKE_TOKEN_FOR_TESTS') { ::CGI.escape(ENV['OEMBED_FACEBOOK_TOKEN']) }
|
12
|
+
else
|
13
|
+
# If the developer doesn't have an OEMBED_FACEBOOK_TOKEN set
|
14
|
+
# use a fake one that will match data in the vcr cassettes.
|
15
|
+
ENV['OEMBED_FACEBOOK_TOKEN'] = 'A_FAKE_TOKEN_FOR_TESTS'
|
16
|
+
end
|
8
17
|
end
|
9
18
|
|
10
19
|
require 'webmock/rspec'
|
11
20
|
require 'coveralls'
|
12
21
|
Coveralls.wear!
|
13
22
|
|
23
|
+
require 'support/shared_examples_for_providers'
|
24
|
+
|
14
25
|
require File.dirname(__FILE__) + '/../lib/oembed'
|
15
26
|
|
16
27
|
RSpec.configure do |config|
|
@@ -18,6 +29,13 @@ RSpec.configure do |config|
|
|
18
29
|
config.tty = true
|
19
30
|
config.color = true
|
20
31
|
config.example_status_persistence_file_path = '.rspec-status'
|
32
|
+
config.filter_run_including :focus => true unless ENV['RUN_ALL_TESTS']
|
33
|
+
config.run_all_when_everything_filtered = true
|
34
|
+
end
|
35
|
+
|
36
|
+
def use_custom_vcr_casette(casette_name)
|
37
|
+
before(:all) { VCR.insert_cassette(casette_name) }
|
38
|
+
after(:all) { VCR.eject_cassette }
|
21
39
|
end
|
22
40
|
|
23
41
|
module OEmbedSpecHelper
|
@@ -1,37 +1,49 @@
|
|
1
1
|
RSpec.shared_examples "an OEmbed::Providers instance" do |expected_valid_urls, expected_invalid_urls|
|
2
|
+
subject { provider }
|
3
|
+
|
2
4
|
expected_valid_urls.each do |valid_url|
|
3
5
|
context "given the valid URL #{valid_url}" do
|
4
|
-
|
5
|
-
it "should be true" do
|
6
|
-
expect(provider_class.include?(valid_url)).to be_truthy
|
7
|
-
end
|
8
|
-
end
|
6
|
+
it { should include(valid_url) }
|
9
7
|
|
10
8
|
describe ".get" do
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
response = provider_class.get(valid_url)
|
15
|
-
}.to_not raise_error
|
16
|
-
expect(response).to be_a(OEmbed::Response)
|
17
|
-
end
|
9
|
+
subject { provider.get(valid_url) }
|
10
|
+
|
11
|
+
it { should be_a(OEmbed::Response) }
|
18
12
|
end
|
19
13
|
end
|
20
14
|
end
|
21
15
|
|
22
16
|
expected_invalid_urls.each do |invalid_url|
|
23
17
|
context "given the invalid URL #{invalid_url}" do
|
24
|
-
|
25
|
-
|
26
|
-
|
18
|
+
it { should_not include(invalid_url) }
|
19
|
+
|
20
|
+
describe ".get" do
|
21
|
+
subject { provider.get(invalid_url) }
|
22
|
+
|
23
|
+
it "should raise an OEmbed::NotFound error" do
|
24
|
+
expect { subject }.to raise_error(OEmbed::NotFound)
|
27
25
|
end
|
28
26
|
end
|
27
|
+
end
|
28
|
+
end
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
describe "OEmbed::Providers.register(provider)" do
|
31
|
+
before(:each) { OEmbed::Providers.register(provider) }
|
32
|
+
after(:each) { OEmbed::Providers.unregister_all }
|
33
|
+
|
34
|
+
describe('.get') do
|
35
|
+
expected_valid_urls.each do |valid_url|
|
36
|
+
context "given the valid URL #{valid_url}" do
|
37
|
+
subject { OEmbed::Providers.get(valid_url) }
|
38
|
+
it { should be_a(OEmbed::Response) }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
expected_invalid_urls.each do |invalid_url|
|
42
|
+
context "given the invalid URL #{invalid_url}" do
|
43
|
+
let(:url) { invalid_url }
|
44
|
+
it "should raise an OEmbed::NotFound error" do
|
45
|
+
expect { expect(OEmbed::Providers.get(url)) }.to raise_error(OEmbed::NotFound)
|
46
|
+
end
|
35
47
|
end
|
36
48
|
end
|
37
49
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-oembed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Magnus Holm
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2021-01-01 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: xml-simple
|
@@ -82,9 +82,11 @@ files:
|
|
82
82
|
- lib/oembed/providers/aggregators/embedly_urls.yml
|
83
83
|
- lib/oembed/providers/aggregators/noembed_urls.yml
|
84
84
|
- lib/oembed/providers/aggregators/oohembed_urls.yml
|
85
|
+
- lib/oembed/providers/builtin_providers.rb
|
85
86
|
- lib/oembed/providers/facebook_post.rb
|
86
87
|
- lib/oembed/providers/facebook_video.rb
|
87
88
|
- lib/oembed/providers/instagram.rb
|
89
|
+
- lib/oembed/providers/tik_tok.rb
|
88
90
|
- lib/oembed/response.rb
|
89
91
|
- lib/oembed/response/link.rb
|
90
92
|
- lib/oembed/response/photo.rb
|
@@ -96,7 +98,12 @@ files:
|
|
96
98
|
- ruby-oembed.gemspec
|
97
99
|
- spec/cassettes/OEmbed_Provider.yml
|
98
100
|
- spec/cassettes/OEmbed_ProviderDiscovery.yml
|
101
|
+
- spec/cassettes/OEmbed_Providers_CodePen.yml
|
102
|
+
- spec/cassettes/OEmbed_Providers_FacebookPost.yml
|
103
|
+
- spec/cassettes/OEmbed_Providers_FacebookVideo.yml
|
104
|
+
- spec/cassettes/OEmbed_Providers_Instagram.yml
|
99
105
|
- spec/cassettes/OEmbed_Providers_Slideshare.yml
|
106
|
+
- spec/cassettes/OEmbed_Providers_TikTok.yml
|
100
107
|
- spec/cassettes/OEmbed_Providers_Twitter.yml
|
101
108
|
- spec/cassettes/OEmbed_Providers_Youtube.yml
|
102
109
|
- spec/formatter/ducktype_backend_spec.rb
|
@@ -109,8 +116,12 @@ files:
|
|
109
116
|
- spec/formatter_spec.rb
|
110
117
|
- spec/provider_discovery_spec.rb
|
111
118
|
- spec/provider_spec.rb
|
112
|
-
- spec/providers/
|
119
|
+
- spec/providers/code_pen_spec.rb
|
120
|
+
- spec/providers/facebook_post_spec.rb
|
121
|
+
- spec/providers/facebook_video_spec.rb
|
122
|
+
- spec/providers/instagram_spec.rb
|
113
123
|
- spec/providers/slideshare_spec.rb
|
124
|
+
- spec/providers/tik_tok_spec.rb
|
114
125
|
- spec/providers/twitter_spec.rb
|
115
126
|
- spec/providers/youtube_spec.rb
|
116
127
|
- spec/providers_spec.rb
|
@@ -127,7 +138,7 @@ rdoc_options:
|
|
127
138
|
- "--main"
|
128
139
|
- README.rdoc
|
129
140
|
- "--title"
|
130
|
-
- ruby-oembed-0.
|
141
|
+
- ruby-oembed-0.15.0
|
131
142
|
- "--inline-source"
|
132
143
|
- "--exclude"
|
133
144
|
- tasks
|
@@ -152,7 +163,12 @@ summary: oEmbed for Ruby
|
|
152
163
|
test_files:
|
153
164
|
- spec/cassettes/OEmbed_Provider.yml
|
154
165
|
- spec/cassettes/OEmbed_ProviderDiscovery.yml
|
166
|
+
- spec/cassettes/OEmbed_Providers_CodePen.yml
|
167
|
+
- spec/cassettes/OEmbed_Providers_FacebookPost.yml
|
168
|
+
- spec/cassettes/OEmbed_Providers_FacebookVideo.yml
|
169
|
+
- spec/cassettes/OEmbed_Providers_Instagram.yml
|
155
170
|
- spec/cassettes/OEmbed_Providers_Slideshare.yml
|
171
|
+
- spec/cassettes/OEmbed_Providers_TikTok.yml
|
156
172
|
- spec/cassettes/OEmbed_Providers_Twitter.yml
|
157
173
|
- spec/cassettes/OEmbed_Providers_Youtube.yml
|
158
174
|
- spec/formatter/ducktype_backend_spec.rb
|
@@ -165,8 +181,12 @@ test_files:
|
|
165
181
|
- spec/formatter_spec.rb
|
166
182
|
- spec/provider_discovery_spec.rb
|
167
183
|
- spec/provider_spec.rb
|
168
|
-
- spec/providers/
|
184
|
+
- spec/providers/code_pen_spec.rb
|
185
|
+
- spec/providers/facebook_post_spec.rb
|
186
|
+
- spec/providers/facebook_video_spec.rb
|
187
|
+
- spec/providers/instagram_spec.rb
|
169
188
|
- spec/providers/slideshare_spec.rb
|
189
|
+
- spec/providers/tik_tok_spec.rb
|
170
190
|
- spec/providers/twitter_spec.rb
|
171
191
|
- spec/providers/youtube_spec.rb
|
172
192
|
- spec/providers_spec.rb
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '../spec_helper')
|
2
|
-
|
3
|
-
describe 'Facebook providers' do
|
4
|
-
let(:access_token) { 'my-fake-access-token' }
|
5
|
-
|
6
|
-
describe 'FacebookPost provider' do
|
7
|
-
let(:provider) { OEmbed::Providers::FacebookPost.new(access_token: access_token) }
|
8
|
-
let(:embed_url) { 'https://www.facebook.com/exampleuser/posts/1234567890' }
|
9
|
-
|
10
|
-
it 'sets the endpoint URL' do
|
11
|
-
expect(provider.endpoint).to(
|
12
|
-
eq("https://graph.facebook.com/v8.0/oembed_post?access_token=#{access_token}")
|
13
|
-
)
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'recognizes embed URLs' do
|
17
|
-
expect(provider).to include(embed_url)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe 'FacebookVideo provider' do
|
22
|
-
let(:provider) { OEmbed::Providers::FacebookVideo.new(access_token: access_token) }
|
23
|
-
let(:embed_url) { 'https://www.facebook.com/exampleuser/videos/1234567890' }
|
24
|
-
|
25
|
-
it 'sets the endpoint URL' do
|
26
|
-
expect(provider.endpoint).to(
|
27
|
-
eq("https://graph.facebook.com/v8.0/oembed_video?access_token=#{access_token}")
|
28
|
-
)
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'recognizes embed URLs' do
|
32
|
-
expect(provider).to include(embed_url)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe 'Instagram provider' do
|
37
|
-
let(:provider) { OEmbed::Providers::Instagram.new(access_token: access_token) }
|
38
|
-
let(:embed_url) { 'https://www.instagram.com/p/r4nd0m1mg/' }
|
39
|
-
|
40
|
-
it 'sets the endpoint URL' do
|
41
|
-
expect(provider.endpoint).to(
|
42
|
-
eq("https://graph.facebook.com/v8.0/instagram_oembed?access_token=#{access_token}")
|
43
|
-
)
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'recognizes embed URLs' do
|
47
|
-
expect(provider).to include(embed_url)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|