ruby-oembed 0.7.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.
@@ -0,0 +1,90 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe OEmbed::Response do
4
+ include OEmbedSpecHelper
5
+
6
+ before(:all) do
7
+ @flickr = OEmbed::Provider.new("http://www.flickr.com/services/oembed/")
8
+ @qik = OEmbed::Provider.new("http://qik.com/api/oembed.{format}", :xml)
9
+ @viddler = OEmbed::Provider.new("http://lab.viddler.com/services/oembed/", :json)
10
+
11
+ @flickr << "http://*.flickr.com/*"
12
+ @qik << "http://qik.com/video/*"
13
+ @qik << "http://qik.com/*"
14
+ @viddler << "http://*.viddler.com/*"
15
+
16
+ @new_res = OEmbed::Response.new(valid_response(:object), OEmbed::Providers::OohEmbed)
17
+
18
+ @default_res = OEmbed::Response.create_for(valid_response(:json), @flickr)
19
+ @xml_res = OEmbed::Response.create_for(valid_response(:xml), @qik, :xml)
20
+ @json_res = OEmbed::Response.create_for(valid_response(:json), @viddler, :json)
21
+ end
22
+
23
+ it "should set the provider" do
24
+ @new_res.provider.should == OEmbed::Providers::OohEmbed
25
+
26
+ @default_res.provider.should == @flickr
27
+ @xml_res.provider.should == @qik
28
+ @json_res.provider.should == @viddler
29
+ end
30
+
31
+ it "should parse the data into #fields" do
32
+ @new_res.fields.keys.should == valid_response(:object).keys
33
+
34
+ @default_res.fields.keys.should == valid_response(:object).keys
35
+ @xml_res.fields.keys.should == valid_response(:object).keys
36
+ @json_res.fields.keys.should == valid_response(:object).keys
37
+ end
38
+
39
+ it "should only allow JSON or XML" do
40
+ lambda do
41
+ OEmbed::Response.create_for(valid_response(:json), @flickr, :json)
42
+ end.should_not raise_error(OEmbed::FormatNotSupported)
43
+
44
+ lambda do
45
+ OEmbed::Response.create_for(valid_response(:xml), @flickr, :xml)
46
+ end.should_not raise_error(OEmbed::FormatNotSupported)
47
+
48
+ lambda do
49
+ OEmbed::Response.create_for(valid_response(:yml), @flickr, :yml)
50
+ end.should raise_error(OEmbed::FormatNotSupported)
51
+ end
52
+
53
+ it "should not parse the incorrect format" do
54
+ lambda do
55
+ OEmbed::Response.create_for(valid_response(:xml), @flickr)
56
+ end.should raise_error(JSON::ParserError)
57
+
58
+ lambda do
59
+ OEmbed::Response.create_for(valid_response(:xml), @viddler, :json)
60
+ end.should raise_error(JSON::ParserError)
61
+
62
+ lambda do
63
+ OEmbed::Response.create_for(valid_response(:json), @viddler, :xml)
64
+ end.should raise_error(ArgumentError)
65
+ end
66
+
67
+ it "should access the XML data through #field" do
68
+ @xml_res.field(:type).should == "photo"
69
+ @xml_res.field(:version).should == "1.0"
70
+ @xml_res.field(:fields).should == "hello"
71
+ @xml_res.field(:__id__).should == "1234"
72
+ end
73
+
74
+ it "should access the JSON data through #field" do
75
+ @json_res.field(:type).should == "photo"
76
+ @json_res.field(:version).should == "1.0"
77
+ @json_res.field(:fields).should == "hello"
78
+ @json_res.field(:__id__).should == 1234
79
+ end
80
+
81
+ it "should automagically define helpers" do
82
+ @default_res.type.should == "photo"
83
+ @default_res.version.should == "1.0"
84
+ end
85
+
86
+ it "should protect important methods" do
87
+ @default_res.fields.should_not == @default_res.field(:fields)
88
+ @default_res.__id__.should_not == @default_res.field(:__id__)
89
+ end
90
+ end
@@ -0,0 +1,69 @@
1
+ require 'rubygems'
2
+ require File.dirname(__FILE__) + '/../lib/oembed'
3
+
4
+ module OEmbedSpecHelper
5
+ EXAMPLE = {
6
+ :flickr => "http://flickr.com/photos/bees/2362225867/",
7
+ :viddler => "http://www.viddler.com/explore/cdevroe/videos/424/",
8
+ :qik => "http://qik.com/video/49565",
9
+ :vimeo => "http://vimeo.com/3100878",
10
+ :pownce => "http://pownce.com/mmalone/notes/1756545/",
11
+ :rev3 => "http://revision3.com/diggnation/2008-04-17xsanned/",
12
+ :hulu => "http://www.hulu.com/watch/4569/firefly-serenity#x-0,vepisode,1",
13
+ :google_video => "http://video.google.com/videoplay?docid=8372603330420559198",
14
+ }
15
+
16
+ def example_url(site)
17
+ return "http://fake.com/" if site == :fake
18
+ EXAMPLE[site]
19
+ end
20
+
21
+ def all_example_urls(*fallback)
22
+ results = EXAMPLE.values
23
+
24
+ # By default don't return example_urls that won't be recognized by
25
+ # the included default providers
26
+ results.delete(example_url(:google_video))
27
+
28
+ # If requested, return URLs that should work with various fallback providers
29
+ fallback.each do |f|
30
+ case f
31
+ when OEmbed::Providers::OohEmbed
32
+ results << example_url(:google_video)
33
+ end
34
+ end
35
+
36
+ results
37
+ end
38
+
39
+ def valid_response(format)
40
+ case format
41
+ when :object
42
+ {
43
+ "type" => "photo",
44
+ "version" => "1.0",
45
+ "fields" => "hello",
46
+ "__id__" => 1234
47
+ }
48
+ when :json
49
+ <<-JSON
50
+ {
51
+ "type": "photo",
52
+ "version": "1.0",
53
+ "fields": "hello",
54
+ "__id__": 1234
55
+ }
56
+ JSON
57
+ when :xml
58
+ <<-XML
59
+ <?xml version="1.0" encoding="utf-8" standalone="yes"?>
60
+ <oembed>
61
+ <type>photo</type>
62
+ <version>1.0</version>
63
+ <fields>hello</fields>
64
+ <__id__>1234</__id__>
65
+ </oembed>
66
+ XML
67
+ end
68
+ end
69
+ end
metadata ADDED
@@ -0,0 +1,125 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-oembed
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 7
8
+ - 0
9
+ version: 0.7.0
10
+ platform: ruby
11
+ authors:
12
+ - Magnus Holm
13
+ - Alex Kessinger
14
+ - Aris Bartee
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2010-08-19 00:00:00 -05:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: json
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: xml-simple
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :runtime
45
+ version_requirements: *id002
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ prerelease: false
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ segments:
54
+ - 0
55
+ version: "0"
56
+ type: :development
57
+ version_requirements: *id003
58
+ description: A fork of a fork. @github[voidfiles,judofyr]. judufyr created the project and voidfiles added support for Embedly. This is just the gem
59
+ email: arisbartee@gmail.com
60
+ executables: []
61
+
62
+ extensions: []
63
+
64
+ extra_rdoc_files:
65
+ - README.md
66
+ files:
67
+ - README.md
68
+ - Rakefile
69
+ - VERSION
70
+ - idea.rb
71
+ - integration_test/test.rb
72
+ - integration_test/test_urls.csv
73
+ - lib/oembed.rb
74
+ - lib/oembed/embedly_urls.json
75
+ - lib/oembed/errors.rb
76
+ - lib/oembed/formatters.rb
77
+ - lib/oembed/provider.rb
78
+ - lib/oembed/provider_discovery.rb
79
+ - lib/oembed/providers.rb
80
+ - lib/oembed/response.rb
81
+ - lib/oembed/response/link.rb
82
+ - lib/oembed/response/photo.rb
83
+ - lib/oembed/response/rich.rb
84
+ - lib/oembed/response/video.rb
85
+ - rails/init.rb
86
+ - ruby-oembed.gemspec
87
+ - spec/provider_spec.rb
88
+ - spec/providers_spec.rb
89
+ - spec/response_spec.rb
90
+ - spec/spec_helper.rb
91
+ has_rdoc: true
92
+ homepage: http://github.com/arisbartee/ruby-oembed
93
+ licenses: []
94
+
95
+ post_install_message:
96
+ rdoc_options:
97
+ - --charset=UTF-8
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ segments:
105
+ - 0
106
+ version: "0"
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ segments:
112
+ - 0
113
+ version: "0"
114
+ requirements: []
115
+
116
+ rubyforge_project:
117
+ rubygems_version: 1.3.6
118
+ signing_key:
119
+ specification_version: 3
120
+ summary: oEmbed for Ruby
121
+ test_files:
122
+ - spec/provider_spec.rb
123
+ - spec/providers_spec.rb
124
+ - spec/response_spec.rb
125
+ - spec/spec_helper.rb