lumiere 0.1.8 → 0.1.10
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.
- data/lib/embed_code/embed_code.rb +44 -0
- data/lib/embed_code/html_object_properties.rb +22 -0
- data/lib/embed_code/src.rb +23 -0
- data/lib/extended_uri.rb +2 -0
- data/lib/fetcher.rb +13 -22
- data/lib/lumiere.rb +0 -7
- data/lib/lumiere/version.rb +1 -1
- data/lib/provider.rb +3 -2
- data/lib/provider/dailymotion/dailymotion.rb +4 -1
- data/lib/provider/dailymotion/representer.rb +4 -0
- data/lib/provider/vimeo/representer.rb +5 -0
- data/lib/provider/vimeo/vimeo.rb +4 -1
- data/lib/provider/vimeoplaylist/representer.rb +4 -0
- data/lib/provider/vimeoplaylist/vimeoplaylist.rb +5 -2
- data/lib/provider/youtube/representer.rb +5 -0
- data/lib/provider/youtube/youtube.rb +4 -1
- data/lib/provider/youtubeplaylist/representer.rb +5 -0
- data/lib/provider/youtubeplaylist/youtubeplaylist.rb +4 -1
- metadata +15 -13
- data/lib/embed_code.rb +0 -55
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative 'src'
|
2
|
+
require_relative 'html_object_properties'
|
3
|
+
|
4
|
+
module Lumiere
|
5
|
+
module EmbedCode
|
6
|
+
extend self
|
7
|
+
|
8
|
+
def embed_code(opts = {})
|
9
|
+
src = generate_src(opts)
|
10
|
+
object_properties = generate_object_properties(opts)
|
11
|
+
|
12
|
+
generate_iframe(src, object_properties)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def generate_src(opts = {})
|
18
|
+
url_attributes = opts.fetch(:url_attributes, {})
|
19
|
+
default_url_attributes = default_attributes.fetch(:url_attributes, {})
|
20
|
+
url_properties = default_url_attributes.merge(url_attributes)
|
21
|
+
src_encoder.(embed_url, url_properties)
|
22
|
+
end
|
23
|
+
|
24
|
+
def src_encoder
|
25
|
+
SRC
|
26
|
+
end
|
27
|
+
|
28
|
+
def generate_object_properties(opts = {})
|
29
|
+
iframe_attributes = opts.fetch(:iframe_attributes, {})
|
30
|
+
default_iframe_attributes = default_attributes.fetch(:iframe_attributes, {})
|
31
|
+
default_iframe_attributes.merge(iframe_attributes)
|
32
|
+
end
|
33
|
+
|
34
|
+
def generate_iframe(src, opts)
|
35
|
+
opts = {src: src}.merge(opts)
|
36
|
+
html_options = html_object_properties.(opts)
|
37
|
+
"<iframe #{html_options}></iframe>"
|
38
|
+
end
|
39
|
+
|
40
|
+
def html_object_properties
|
41
|
+
HTMLObjectProperties
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Lumiere
|
2
|
+
module HTMLObjectProperties
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def generate(opts={})
|
6
|
+
opts.map do |key, value|
|
7
|
+
generate_object_property(key, value)
|
8
|
+
end.join(' ')
|
9
|
+
end
|
10
|
+
alias_method :call, :generate
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def generate_object_property(key, value)
|
15
|
+
if value.is_a?(TrueClass)
|
16
|
+
key #set as 'option' rather than 'option=true'
|
17
|
+
else
|
18
|
+
"#{key}=\"#{value}\""
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
module Lumiere
|
4
|
+
module SRC
|
5
|
+
extend self
|
6
|
+
|
7
|
+
def encode(src, opts={})
|
8
|
+
src += www_form(opts) unless opts.empty?
|
9
|
+
src
|
10
|
+
end
|
11
|
+
alias_method :call, :encode
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def www_form(opts)
|
16
|
+
"?" + uri.encode_www_form(opts)
|
17
|
+
end
|
18
|
+
|
19
|
+
def uri
|
20
|
+
URI
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/extended_uri.rb
CHANGED
data/lib/fetcher.rb
CHANGED
@@ -1,33 +1,24 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
|
3
3
|
module Lumiere
|
4
|
-
|
4
|
+
module Fetcher
|
5
|
+
extend self
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
def remote_attributes
|
12
|
-
unless request_hash[@api_url]
|
13
|
-
request_hash[@api_url] = unpack
|
7
|
+
def remote_attributes(api_url, unpack_into)
|
8
|
+
body = scrape(api_url)
|
9
|
+
unpack(body, unpack_into)
|
14
10
|
end
|
15
|
-
request_hash[@api_url]
|
16
|
-
end
|
17
11
|
|
18
|
-
|
12
|
+
private
|
19
13
|
|
20
|
-
|
21
|
-
|
22
|
-
|
14
|
+
def unpack(body, unpack_into)
|
15
|
+
unpack_into.from_json(body)
|
16
|
+
end
|
23
17
|
|
24
|
-
|
25
|
-
|
26
|
-
|
18
|
+
def scrape(url)
|
19
|
+
body = open(url).read
|
20
|
+
body
|
21
|
+
end
|
27
22
|
|
28
|
-
def raw_response
|
29
|
-
open(@api_url).read
|
30
23
|
end
|
31
|
-
|
32
|
-
end
|
33
24
|
end
|
data/lib/lumiere.rb
CHANGED
@@ -1,12 +1,5 @@
|
|
1
1
|
require "lumiere/version"
|
2
|
-
require 'open-uri'
|
3
2
|
require 'forwardable'
|
4
|
-
require 'net/http'
|
5
|
-
require 'json'
|
6
|
-
require 'representable'
|
7
|
-
require 'representable/coercion'
|
8
|
-
require 'representable/json'
|
9
|
-
require 'representable/json/collection'
|
10
3
|
|
11
4
|
require_relative 'provider'
|
12
5
|
|
data/lib/lumiere/version.rb
CHANGED
data/lib/provider.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
1
3
|
require_relative 'extended_uri'
|
2
4
|
require_relative 'playlist'
|
3
5
|
require_relative 'fetcher'
|
4
|
-
require_relative 'embed_code'
|
6
|
+
require_relative 'embed_code/embed_code'
|
5
7
|
|
6
8
|
module Lumiere
|
7
9
|
class Provider
|
@@ -9,7 +11,6 @@ module Lumiere
|
|
9
11
|
PROVIDERS = %w(YouTubePlaylist VimeoPlaylist YouTube Vimeo Dailymotion)
|
10
12
|
PROVIDERS.each do |provider|
|
11
13
|
require_relative "provider/#{provider.downcase}/#{provider.downcase}"
|
12
|
-
require_relative "provider/#{provider.downcase}/representer"
|
13
14
|
end
|
14
15
|
|
15
16
|
def self.delegate(url)
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require_relative 'representer'
|
2
|
+
require_relative '../../provider'
|
3
|
+
|
1
4
|
module Lumiere
|
2
5
|
class Dailymotion < Provider
|
3
6
|
attr_accessor :url
|
@@ -75,7 +78,7 @@ class Dailymotion < Provider
|
|
75
78
|
private
|
76
79
|
|
77
80
|
def fetch
|
78
|
-
@fetch ||= Fetcher.
|
81
|
+
@fetch ||= Fetcher.remote_attributes(api_url, unpack_into)
|
79
82
|
end
|
80
83
|
|
81
84
|
def calculate_video_id
|
data/lib/provider/vimeo/vimeo.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require_relative 'representer'
|
2
|
+
require_relative '../../provider'
|
3
|
+
|
1
4
|
module Lumiere
|
2
5
|
class Vimeo < Provider
|
3
6
|
attr_accessor :url
|
@@ -82,7 +85,7 @@ class Vimeo < Provider
|
|
82
85
|
private
|
83
86
|
|
84
87
|
def fetch
|
85
|
-
@fetch ||= Fetcher.
|
88
|
+
@fetch ||= Fetcher.remote_attributes(api_url, unpack_into)[0]
|
86
89
|
end
|
87
90
|
|
88
91
|
def calculate_video_id
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require_relative 'representer'
|
2
|
+
require_relative '../../provider'
|
3
|
+
|
1
4
|
module Lumiere
|
2
5
|
class VimeoPlaylist < Provider
|
3
6
|
attr_accessor :url
|
@@ -80,7 +83,7 @@ class VimeoPlaylist < Provider
|
|
80
83
|
private
|
81
84
|
|
82
85
|
def fetch
|
83
|
-
@fetch ||= Fetcher.
|
86
|
+
@fetch ||= Fetcher.remote_attributes(api_url, unpack_into)
|
84
87
|
end
|
85
88
|
|
86
89
|
def calculate_playlist_id
|
@@ -128,7 +131,7 @@ class VimeoPlaylist < Provider
|
|
128
131
|
end
|
129
132
|
|
130
133
|
def fetch
|
131
|
-
Fetcher.
|
134
|
+
Fetcher.remote_attributes(api_url, unpack_into)
|
132
135
|
end
|
133
136
|
|
134
137
|
def page_count
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require_relative 'representer'
|
2
|
+
require_relative '../../provider'
|
3
|
+
|
1
4
|
module Lumiere
|
2
5
|
class YouTube < Provider
|
3
6
|
attr_accessor :url
|
@@ -80,7 +83,7 @@ class YouTube < Provider
|
|
80
83
|
private
|
81
84
|
|
82
85
|
def fetch
|
83
|
-
@fetch ||= Fetcher.
|
86
|
+
@fetch ||= Fetcher.remote_attributes(api_url, unpack_into)
|
84
87
|
end
|
85
88
|
|
86
89
|
def calculate_video_id
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require_relative 'representer'
|
2
|
+
require_relative '../../provider'
|
3
|
+
|
1
4
|
module Lumiere
|
2
5
|
class YouTubePlaylist < Provider
|
3
6
|
attr_accessor :url
|
@@ -104,7 +107,7 @@ class YouTubePlaylist < Provider
|
|
104
107
|
end
|
105
108
|
|
106
109
|
def fetch!
|
107
|
-
Fetcher.
|
110
|
+
Fetcher.remote_attributes(api_url, unpack_into)
|
108
111
|
end
|
109
112
|
|
110
113
|
def calculate_playlist_id
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lumiere
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-06-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: representable
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.8.
|
21
|
+
version: 1.8.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.8.
|
29
|
+
version: 1.8.5
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: virtus
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,33 +64,33 @@ dependencies:
|
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
none: false
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 10.3.1
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
77
|
+
version: 10.3.1
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: rspec
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
81
81
|
none: false
|
82
82
|
requirements:
|
83
|
-
- -
|
83
|
+
- - ~>
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
85
|
+
version: 3.0.0
|
86
86
|
type: :development
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
90
90
|
requirements:
|
91
|
-
- -
|
91
|
+
- - ~>
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
93
|
+
version: 3.0.0
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: webmock
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,7 +146,9 @@ extensions: []
|
|
146
146
|
extra_rdoc_files: []
|
147
147
|
files:
|
148
148
|
- LICENSE.txt
|
149
|
-
- lib/embed_code.rb
|
149
|
+
- lib/embed_code/embed_code.rb
|
150
|
+
- lib/embed_code/html_object_properties.rb
|
151
|
+
- lib/embed_code/src.rb
|
150
152
|
- lib/extended_uri.rb
|
151
153
|
- lib/fetcher.rb
|
152
154
|
- lib/lumiere/version.rb
|
data/lib/embed_code.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'open-uri'
|
2
|
-
|
3
|
-
module Lumiere
|
4
|
-
module EmbedCode
|
5
|
-
extend self
|
6
|
-
|
7
|
-
def embed_code(opts = {})
|
8
|
-
iframe_attributes = opts.fetch(:iframe_attributes, {})
|
9
|
-
url_attributes = opts.fetch(:url_attributes, {})
|
10
|
-
|
11
|
-
default_iframe_attributes = default_attributes.fetch(:iframe_attributes, {})
|
12
|
-
default_url_attributes = default_attributes.fetch(:url_attributes, {})
|
13
|
-
|
14
|
-
object_properties = default_iframe_attributes.merge(iframe_attributes)
|
15
|
-
url_properties = default_url_attributes.merge(url_attributes)
|
16
|
-
|
17
|
-
generate(embed_url, url_properties, object_properties)
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def generate(src, url_properties={}, object_properties={})
|
23
|
-
src = generate_src(src, url_properties)
|
24
|
-
object_properties = {src: src}.merge(object_properties)
|
25
|
-
generate_html_object('iframe', object_properties)
|
26
|
-
end
|
27
|
-
|
28
|
-
def generate_src(src, url_properties)
|
29
|
-
if !url_properties.empty?
|
30
|
-
src += "?" + URI.encode_www_form(url_properties)
|
31
|
-
else
|
32
|
-
src
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def generate_html_object(object_name, opts)
|
37
|
-
html_options = generate_object_properties(opts)
|
38
|
-
"<#{object_name} #{html_options}></#{object_name}>"
|
39
|
-
end
|
40
|
-
|
41
|
-
def generate_object_properties(opts={})
|
42
|
-
opts.map do |key, value|
|
43
|
-
generate_object_property(key, value)
|
44
|
-
end.join(' ')
|
45
|
-
end
|
46
|
-
|
47
|
-
def generate_object_property(key, value)
|
48
|
-
if value.is_a?(TrueClass)
|
49
|
-
key #set as 'option' rather than 'option=true'
|
50
|
-
else
|
51
|
-
"#{key}=\"#{value}\""
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|