embedly-rb 0.0.1

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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in embedly.gemspec
4
+ gemspec
@@ -0,0 +1,10 @@
1
+ guard 'bundler' do
2
+ watch('Gemfile')
3
+ watch(/^.+\.gemspec/)
4
+ end
5
+
6
+ guard 'rspec', :version => 2, :cli => '-c -f d -p' do
7
+ watch(%r{^spec/.+_spec\.rb$})
8
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
9
+ watch('spec/spec_helper.rb') { "spec" }
10
+ end
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Felipe Elias Philipp
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,41 @@
1
+ # The embedly-rb gem
2
+
3
+ embedly-rb is wrapper for the Embed.ly API
4
+
5
+ ## Disclaimer
6
+
7
+ This gem is currently on development. Only use it if you know what you're doing
8
+
9
+ ## Installation
10
+
11
+ gem install embedly-rb
12
+
13
+ ## Usage
14
+
15
+ # configure you key
16
+ Embedly.configure do |config|
17
+ config.key = 'my_key'
18
+ end
19
+
20
+ # choose an endpoint
21
+ api = Embedly::Oembed.new :url => 'http://vimeo.com/18150336'
22
+
23
+ # retrieve from embedly
24
+ api.title
25
+ # => "Wingsuit Basejumping - The Need 4 Speed: The Art of Flight"
26
+
27
+ # is it a video type?
28
+ api.video?
29
+ # => true
30
+
31
+ ## Contributing
32
+
33
+ bundle install
34
+ rake
35
+
36
+ Make a fork and send me a pull request
37
+
38
+ ## Copyright
39
+
40
+ Copyright (c) 2011 Felipe Elias Philipp.
41
+ See [LICENSE](https://github.com/felipeelias/embedly-rb/blob/master/LICENSE.md) for details.
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ task :default => :spec
5
+
6
+ desc "Run all examples"
7
+ RSpec::Core::RakeTask.new(:spec) do |t|
8
+ t.rspec_opts = %w[--color]
9
+ t.verbose = false
10
+ end
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "embedly/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "embedly-rb"
7
+ s.version = Embedly::VERSION
8
+
9
+ s.authors = ["Felipe Elias Philipp"]
10
+ s.email = ["felipeelias@gmail.com"]
11
+
12
+ s.homepage = "https://github.com/felipeelias/embedly-rb"
13
+ s.summary = %q{A Ruby wrapper for the Embed.ly API}
14
+ s.description = %q{A Ruby wrapper for the Embed.ly API}
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_dependency 'hashie', '~> 1.1.0'
21
+ s.add_dependency 'faraday', '~> 0.7.4'
22
+ s.add_dependency 'faraday_middleware', '~> 0.7.0'
23
+ s.add_dependency 'multi_json', '~> 1.0.0'
24
+
25
+ s.add_development_dependency "rspec"
26
+ s.add_development_dependency "guard-rspec"
27
+ s.add_development_dependency "guard-bundler"
28
+ s.add_development_dependency "growl"
29
+ s.add_development_dependency "webmock"
30
+ end
@@ -0,0 +1,18 @@
1
+ require "embedly/version"
2
+ require "embedly/configuration"
3
+ require "embedly/oembed"
4
+
5
+ module Embedly
6
+
7
+ class MissingKeyError < StandardError; end
8
+
9
+ class << self
10
+ def configuration
11
+ @configuration ||= Embedly::Configuration.new
12
+ end
13
+
14
+ def configure
15
+ yield configuration
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ module Embedly
2
+ class Configuration
3
+ attr_accessor :key
4
+
5
+ def key
6
+ @key ? @key : raise(Embedly::MissingKeyError)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,71 @@
1
+ require "faraday_middleware"
2
+
3
+ module Embedly
4
+
5
+ API_URL = 'http://api.embed.ly'
6
+
7
+ class Oembed
8
+
9
+ ENDPOINT_URL = '/1/oembed'
10
+
11
+ ATTRIBUTES = [
12
+ :provider_url,
13
+ :description,
14
+ :title,
15
+ :author_name,
16
+ :height,
17
+ :width,
18
+ :html,
19
+ :thumbnail_width,
20
+ :version,
21
+ :provider_name,
22
+ :thumbnail_url,
23
+ :type,
24
+ :thumbnail_height,
25
+ :author_url
26
+ ]
27
+
28
+ class << self
29
+ attr_accessor :key
30
+ end
31
+
32
+ attr_accessor :options, :request
33
+
34
+ def initialize(options)
35
+ @options = options
36
+ end
37
+
38
+ def video?
39
+ true
40
+ end
41
+
42
+ def url
43
+ options[:url]
44
+ end
45
+
46
+ ATTRIBUTES.each do |attribute|
47
+ define_method attribute do
48
+ request.send(attribute) if request.respond_to?(attribute)
49
+ end
50
+ end
51
+
52
+ def request
53
+ @request ||= connection.get { |request|
54
+ request.url ENDPOINT_URL, :url => url, :key => configuration.key
55
+ }.body
56
+ end
57
+
58
+ def connection
59
+ Faraday.new API_URL do |builder|
60
+ builder.use Faraday::Response::Mashify
61
+ builder.use Faraday::Response::ParseJson
62
+ builder.adapter :net_http
63
+ end
64
+ end
65
+
66
+ def configuration
67
+ Embedly.configuration
68
+ end
69
+ end
70
+
71
+ end
@@ -0,0 +1,3 @@
1
+ module Embedly
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,16 @@
1
+ require "spec_helper"
2
+
3
+ describe Embedly::Configuration do
4
+ describe "#key" do
5
+ it "sets the key" do
6
+ subject.key = 'my_key'
7
+ subject.key.should == 'my_key'
8
+ end
9
+
10
+ it "raises an error if the key wasn't set" do
11
+ expect {
12
+ subject.key
13
+ }.to raise_error(Embedly::MissingKeyError)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ require "spec_helper"
2
+
3
+ describe Embedly do
4
+ describe "#configuration" do
5
+ it "always returns the same object" do
6
+ Embedly.configuration.should equal(Embedly.configuration)
7
+ end
8
+
9
+ it "configures the object" do
10
+ Embedly.configure do |config|
11
+ config.key = 'my_key'
12
+ end
13
+
14
+ Embedly.configuration.key.should == 'my_key'
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,45 @@
1
+ require "spec_helper"
2
+
3
+ describe Embedly::Oembed do
4
+ let(:key) { 'my_key' }
5
+
6
+ before do
7
+ Embedly.configure do |c|
8
+ c.key = key
9
+ end
10
+ end
11
+
12
+ describe 'fetching a video' do
13
+ let(:url) { 'http://vimeo.com/18150336' }
14
+
15
+ subject { Embedly::Oembed.new :url => url }
16
+
17
+ before do
18
+ stub_oembed url, :fixture => 'vimeo.com'
19
+ end
20
+
21
+ it { should be_video }
22
+
23
+ it 'has the provider name' do
24
+ subject.provider_name.should == 'Vimeo'
25
+ end
26
+
27
+ it 'has the provider url' do
28
+ subject.provider_url.should == 'http://vimeo.com/'
29
+ end
30
+
31
+ it 'has description' do
32
+ subject.description.should =~ /The Need 4 Speed/
33
+ end
34
+ end
35
+
36
+ def stub_oembed(url, options)
37
+ stub_request(:get, "http://api.embed.ly/1/oembed")
38
+ .with(:query => {'key' => key, 'url' => url})
39
+ .to_return(:body => fixture(options[:fixture]))
40
+ end
41
+
42
+ def fixture(name)
43
+ File.new("spec/fixtures/#{name}.json")
44
+ end
45
+ end
@@ -0,0 +1 @@
1
+ {"provider_url": "http://vimeo.com/", "description": "The Need 4 Speed: The Art of Flight A collection of shots from flights made during the 2009-2010 season by the talented group of wingsuit basejumpers, while flying the V3, Hybrid LD2/Trango rigs and testing several new V-series wingsuit prototypes around Europe. Feel the need. The need for speed!", "title": "Wingsuit Basejumping - The Need 4 Speed: The Art of Flight", "author_name": "Phoenix Fly", "height": 720, "width": 1280, "html": "<iframe src=\"http://player.vimeo.com/video/18150336\" width=\"1280\" height=\"720\" frameborder=\"0\"></iframe>", "thumbnail_width": 1280, "version": "1.0", "provider_name": "Vimeo", "thumbnail_url": "http://b.vimeocdn.com/ts/117/311/117311910_1280.jpg", "type": "video", "thumbnail_height": 720, "author_url": "http://vimeo.com/phoenixfly"}
@@ -0,0 +1,2 @@
1
+ require "webmock/rspec"
2
+ require "embedly"
metadata ADDED
@@ -0,0 +1,165 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: embedly-rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Felipe Elias Philipp
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-08-25 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: hashie
16
+ requirement: &70248033677900 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.1.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70248033677900
25
+ - !ruby/object:Gem::Dependency
26
+ name: faraday
27
+ requirement: &70248033677400 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 0.7.4
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70248033677400
36
+ - !ruby/object:Gem::Dependency
37
+ name: faraday_middleware
38
+ requirement: &70248033676940 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 0.7.0
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70248033676940
47
+ - !ruby/object:Gem::Dependency
48
+ name: multi_json
49
+ requirement: &70248033676480 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.0
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70248033676480
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &70248033676100 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70248033676100
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-rspec
71
+ requirement: &70248033675640 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70248033675640
80
+ - !ruby/object:Gem::Dependency
81
+ name: guard-bundler
82
+ requirement: &70248033705420 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70248033705420
91
+ - !ruby/object:Gem::Dependency
92
+ name: growl
93
+ requirement: &70248033705000 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70248033705000
102
+ - !ruby/object:Gem::Dependency
103
+ name: webmock
104
+ requirement: &70248033704580 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70248033704580
113
+ description: A Ruby wrapper for the Embed.ly API
114
+ email:
115
+ - felipeelias@gmail.com
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - .gitignore
121
+ - Gemfile
122
+ - Guardfile
123
+ - LICENSE.md
124
+ - README.md
125
+ - Rakefile
126
+ - embedly.gemspec
127
+ - lib/embedly.rb
128
+ - lib/embedly/configuration.rb
129
+ - lib/embedly/oembed.rb
130
+ - lib/embedly/version.rb
131
+ - spec/embedly/configuration_spec.rb
132
+ - spec/embedly/embedly_spec.rb
133
+ - spec/endpoints/oembed_spec.rb
134
+ - spec/fixtures/vimeo.com.json
135
+ - spec/spec_helper.rb
136
+ homepage: https://github.com/felipeelias/embedly-rb
137
+ licenses: []
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ required_rubygems_version: !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubyforge_project:
156
+ rubygems_version: 1.8.8
157
+ signing_key:
158
+ specification_version: 3
159
+ summary: A Ruby wrapper for the Embed.ly API
160
+ test_files:
161
+ - spec/embedly/configuration_spec.rb
162
+ - spec/embedly/embedly_spec.rb
163
+ - spec/endpoints/oembed_spec.rb
164
+ - spec/fixtures/vimeo.com.json
165
+ - spec/spec_helper.rb