tinyembedly 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/README.md +41 -0
- data/lib/tinyembedly.rb +2 -0
- data/lib/tinyembedly/base_uri.rb +3 -0
- data/lib/tinyembedly/oembed.rb +1 -1
- data/lib/tinyembedly/service.rb +26 -0
- data/lib/tinyembedly/version.rb +1 -1
- data/spec/oembed_spec.rb +28 -27
- data/spec/service_spec.rb +42 -0
- metadata +17 -12
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Tinyembedly [![Build Status](https://secure.travis-ci.org/dies-el/tinyembedly.png)](http://travis-ci.org/dies-el/tinyembedly)
|
2
|
+
|
3
|
+
A super tiny Embedly oEmbed library, using HTTParty. It makes a GET request to Embed.ly and returns the response in the form of a hash.
|
4
|
+
|
5
|
+
Extracted from [Elementalise](http://elementalise.com).
|
6
|
+
|
7
|
+
# Installation
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
get install tinyembedly
|
11
|
+
```
|
12
|
+
|
13
|
+
or, add it to your Gemfile
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
gem 'tinyembedly'
|
17
|
+
```
|
18
|
+
|
19
|
+
# Prereqs
|
20
|
+
|
21
|
+
You don't _need_ an Embed.ly API key, but you should really get one. [Sign up for an Embed.ly account](http://embed.ly/pricing) (they have a free plan).
|
22
|
+
|
23
|
+
# Getting started
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
response = Tinyembedly::Oembed.to_hash("http://youtu.be/12jmp4KVRPM")
|
27
|
+
```
|
28
|
+
|
29
|
+
Which calls [this endpoint](http://api.embed.ly/1/oembed?url=http://youtu.be/12jmp4KVRPM) and converts it to a hash.
|
30
|
+
|
31
|
+
Thats it.
|
32
|
+
|
33
|
+
# Contributors
|
34
|
+
|
35
|
+
- Ebony Charlton
|
36
|
+
|
37
|
+
Noone else. Could you help? Go on. Goooo on. Goooooooo on!
|
38
|
+
|
39
|
+
# License
|
40
|
+
|
41
|
+
This code is free to use under the terms of the MIT license.
|
data/lib/tinyembedly.rb
CHANGED
data/lib/tinyembedly/oembed.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
module Tinyembedly
|
2
|
+
class Service
|
3
|
+
include HTTParty
|
4
|
+
|
5
|
+
def self.services
|
6
|
+
if !defined?(@@services) || @@services.nil?
|
7
|
+
res = get("http://#{BASE_URI}/1/services/ruby")
|
8
|
+
@@services = res.code == 200 ? res.parsed_response : nil
|
9
|
+
end
|
10
|
+
@@services
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.services_regex
|
14
|
+
if services.is_a?(Array)
|
15
|
+
r = services.collect { |service| service['regex'].join('|') }.join('|')
|
16
|
+
Regexp.new("^(#{r})$")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
protected
|
21
|
+
|
22
|
+
def self.endpoint
|
23
|
+
'/1/services/ruby'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/tinyembedly/version.rb
CHANGED
data/spec/oembed_spec.rb
CHANGED
@@ -1,6 +1,34 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Tinyembedly::Oembed do
|
4
|
+
describe "to_hash" do
|
5
|
+
it "when successful, will return the response as a hash" do
|
6
|
+
response = mock(:code => 200, :parsed_response => 'response_hash')
|
7
|
+
|
8
|
+
oembed = Tinyembedly::Oembed.new
|
9
|
+
oembed.expects(:get_oembed).once.returns(response)
|
10
|
+
|
11
|
+
oembed.to_hash.should eq('response_hash')
|
12
|
+
end
|
13
|
+
|
14
|
+
it "when an HTTP error occurs, will raise a Tinyembedly::ResponseError" do
|
15
|
+
response = mock(:code => 401)
|
16
|
+
|
17
|
+
oembed = Tinyembedly::Oembed.new
|
18
|
+
oembed.expects(:get_oembed).once.returns(response)
|
19
|
+
|
20
|
+
lambda { oembed.to_hash }.should raise_error(Tinyembedly::ResponseError)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "self.to_hash" do
|
25
|
+
it "will instantiate the Oembed with the passed in url and call #to_hash" do
|
26
|
+
oembed = mock(:to_hash => 'response_hash')
|
27
|
+
Tinyembedly::Oembed.expects(:new).with({ :url => 'url_placeholder' }).returns(oembed)
|
28
|
+
Tinyembedly::Oembed.to_hash('url_placeholder').should eq('response_hash')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
4
32
|
describe "params" do
|
5
33
|
it "returns a hash containing the url and api key in the format Embedly expects" do
|
6
34
|
oembed = Tinyembedly::Oembed.new(:url => 'url_placeholder', :api_key => 'fish')
|
@@ -28,31 +56,4 @@ describe Tinyembedly::Oembed do
|
|
28
56
|
end
|
29
57
|
end
|
30
58
|
|
31
|
-
describe "to_hash" do
|
32
|
-
it "when successful, will return a the response as a hash" do
|
33
|
-
response = mock(:code => 200, :parsed_response => 'response_hash')
|
34
|
-
|
35
|
-
oembed = Tinyembedly::Oembed.new
|
36
|
-
oembed.expects(:get_oembed).once.returns(response)
|
37
|
-
|
38
|
-
oembed.to_hash.should eq('response_hash')
|
39
|
-
end
|
40
|
-
|
41
|
-
it "when an HTTP error occurs, will raise a Tinyembedly::ResponseError" do
|
42
|
-
response = mock(:code => 401)
|
43
|
-
|
44
|
-
oembed = Tinyembedly::Oembed.new
|
45
|
-
oembed.expects(:get_oembed).once.returns(response)
|
46
|
-
|
47
|
-
lambda { oembed.to_hash }.should raise_error(Tinyembedly::ResponseError)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe "self.to_hash" do
|
52
|
-
it "will instantiate the Oembed with the passed in url and call #to_hash" do
|
53
|
-
oembed = mock(:to_hash => 'response_hash')
|
54
|
-
Tinyembedly::Oembed.expects(:new).with({ :url => 'url_placeholder' }).returns(oembed)
|
55
|
-
Tinyembedly::Oembed.to_hash('url_placeholder').should eq('response_hash')
|
56
|
-
end
|
57
|
-
end
|
58
59
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Tinyembedly::Service do
|
4
|
+
before(:each) do
|
5
|
+
@base = Tinyembedly::Service
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "list of services" do
|
9
|
+
it "fetches list of services" do
|
10
|
+
@base.expects(:get).with('http://api.embed.ly/1/services/ruby').returns(mock(:code => 0))
|
11
|
+
@base.services
|
12
|
+
end
|
13
|
+
|
14
|
+
it "stores response" do
|
15
|
+
services = [{'name' => 'youtube','regex' => []}]
|
16
|
+
response = mock(:code => 200, :parsed_response => services)
|
17
|
+
@base.expects(:get).returns(response)
|
18
|
+
@base.services.size.should == 1
|
19
|
+
@base.services.first['name'].should == 'youtube'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "service regexes" do
|
24
|
+
it "creates a regex" do
|
25
|
+
@base.stubs(:services).returns([{'regex' => []}])
|
26
|
+
@base.services_regex.should be_kind_of(Regexp)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "returns nil when services missing" do
|
30
|
+
@base.stubs(:services).returns(nil)
|
31
|
+
@base.services_regex.should be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
it "collects regexes" do
|
35
|
+
@base.stubs(:services).returns([
|
36
|
+
{'regex' => ["http:\\/\\/.*youtube\\.com\\/watch.*","http:\\/\\/youtu\\.be\\/.*"]},
|
37
|
+
{'regex' => ["http:\\/\\/military\\.discovery\\.com\\/videos\\/.*"]}])
|
38
|
+
@base.services_regex.should == /^(http:\/\/.*youtube\.com\/watch.*|http:\/\/youtu\.be\/.*|http:\/\/military\.discovery\.com\/videos\/.*)$/
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tinyembedly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-02-13 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
16
|
-
requirement: &
|
16
|
+
requirement: &70218979854880 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.5.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70218979854880
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec-core
|
27
|
-
requirement: &
|
27
|
+
requirement: &70218979854160 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70218979854160
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec-expectations
|
38
|
-
requirement: &
|
38
|
+
requirement: &70218979853180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70218979853180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: mocha
|
49
|
-
requirement: &
|
49
|
+
requirement: &70218979852240 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70218979852240
|
58
58
|
description: A super tiny Embedly oEmbed library, using HTTParty
|
59
59
|
email:
|
60
60
|
- andrew@desto.net
|
@@ -64,15 +64,19 @@ extra_rdoc_files: []
|
|
64
64
|
files:
|
65
65
|
- .gitignore
|
66
66
|
- .rspec
|
67
|
+
- .travis.yml
|
67
68
|
- Gemfile
|
68
69
|
- MIT-LICENSE
|
69
70
|
- README.md
|
70
71
|
- Rakefile
|
71
72
|
- lib/tinyembedly.rb
|
73
|
+
- lib/tinyembedly/base_uri.rb
|
72
74
|
- lib/tinyembedly/oembed.rb
|
73
75
|
- lib/tinyembedly/response_error.rb
|
76
|
+
- lib/tinyembedly/service.rb
|
74
77
|
- lib/tinyembedly/version.rb
|
75
78
|
- spec/oembed_spec.rb
|
79
|
+
- spec/service_spec.rb
|
76
80
|
- spec/spec_helper.rb
|
77
81
|
- tinyembedly.gemspec
|
78
82
|
homepage: https://github.com/dies-el/tinyembedly
|
@@ -89,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
93
|
version: '0'
|
90
94
|
segments:
|
91
95
|
- 0
|
92
|
-
hash:
|
96
|
+
hash: -102373094893876629
|
93
97
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
98
|
none: false
|
95
99
|
requirements:
|
@@ -98,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
102
|
version: '0'
|
99
103
|
segments:
|
100
104
|
- 0
|
101
|
-
hash:
|
105
|
+
hash: -102373094893876629
|
102
106
|
requirements: []
|
103
107
|
rubyforge_project: tinyembedly
|
104
108
|
rubygems_version: 1.8.10
|
@@ -107,4 +111,5 @@ specification_version: 3
|
|
107
111
|
summary: Fetch Embedly oEmbed data
|
108
112
|
test_files:
|
109
113
|
- spec/oembed_spec.rb
|
114
|
+
- spec/service_spec.rb
|
110
115
|
- spec/spec_helper.rb
|