vj-sdk 0.5.6 → 0.6.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.
- data/Gemfile +3 -2
- data/Rakefile +1 -0
- data/VERSION.yml +3 -3
- data/lib/videojuicer.rb +2 -0
- data/lib/videojuicer/presentation.rb +25 -2
- data/lib/videojuicer/resource/base.rb +2 -0
- data/lib/videojuicer/shared/liquid_helper.rb +30 -0
- data/lib/videojuicer/user.rb +1 -0
- data/spec/presentation_spec.rb +43 -0
- data/spec/shared/resource_spec.rb +1 -0
- data/vj-sdk.gemspec +8 -4
- metadata +41 -13
data/Gemfile
CHANGED
@@ -2,7 +2,7 @@ source :gemcutter
|
|
2
2
|
|
3
3
|
# http://github.com/carlhuda/bundler/issues/#issue/107
|
4
4
|
# - do not change unless lib/bundler_runtime_patch tested / defunct
|
5
|
-
gem "bundler", "0.9.
|
5
|
+
gem "bundler", "0.9.26"
|
6
6
|
|
7
7
|
def gems(names, version)
|
8
8
|
names.each { |n| gem(n, version) }
|
@@ -15,4 +15,5 @@ gem "rake", ">= 0.8.7"
|
|
15
15
|
gem "rspec", ">= 1.3.0"
|
16
16
|
gem "mash"
|
17
17
|
gem "randexp"
|
18
|
-
gem "ruby-hmac"
|
18
|
+
gem "ruby-hmac"
|
19
|
+
gem "liquid", "2.0.0"
|
data/Rakefile
CHANGED
@@ -19,6 +19,7 @@ begin
|
|
19
19
|
gem.add_dependency "json", ">= 1.0"
|
20
20
|
gem.add_dependency "ruby-hmac", ">= 0.3.2"
|
21
21
|
gem.add_dependency "mash", ">= 0.0.3"
|
22
|
+
gem.add_dependency "liquid", "2.0.0"
|
22
23
|
end
|
23
24
|
rescue LoadError
|
24
25
|
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
data/VERSION.yml
CHANGED
data/lib/videojuicer.rb
CHANGED
@@ -6,6 +6,7 @@ require 'cgi'
|
|
6
6
|
require 'json'
|
7
7
|
require 'hmac-sha1'
|
8
8
|
require 'net/http'
|
9
|
+
require 'liquid'
|
9
10
|
|
10
11
|
# Core ext
|
11
12
|
require 'core_ext/hash'
|
@@ -15,6 +16,7 @@ require 'core_ext/cgi'
|
|
15
16
|
# Core mixins
|
16
17
|
require 'videojuicer/shared/exceptions'
|
17
18
|
require 'videojuicer/shared/configurable'
|
19
|
+
require 'videojuicer/shared/liquid_helper'
|
18
20
|
# Authentication and authorisation
|
19
21
|
require 'videojuicer/oauth/request_proxy'
|
20
22
|
require 'videojuicer/oauth/proxy_factory'
|
@@ -4,7 +4,6 @@ module Videojuicer
|
|
4
4
|
include Videojuicer::Resource::Embeddable
|
5
5
|
include Videojuicer::Exceptions
|
6
6
|
|
7
|
-
property :slug, String
|
8
7
|
property :title, String
|
9
8
|
property :author, String
|
10
9
|
property :author_url, String
|
@@ -30,10 +29,34 @@ module Videojuicer
|
|
30
29
|
|
31
30
|
property :tag_list, String
|
32
31
|
|
32
|
+
|
33
|
+
@@asset_types = %w(video flash image document audio)
|
34
|
+
|
33
35
|
def permalink
|
34
36
|
proxy = proxy_for(config)
|
35
37
|
"#{proxy.host_stub}/presentations/#{id}.html?seed_name=#{seed_name}".gsub(":80/","/")
|
36
38
|
end
|
37
|
-
|
39
|
+
|
40
|
+
def asset_ids
|
41
|
+
Videojuicer::SDKLiquidHelper::Filters::AssetBlock.reset!
|
42
|
+
@@asset_types.each do |type|
|
43
|
+
Liquid::Template.register_tag type, Videojuicer::SDKLiquidHelper::Filters::AssetBlock
|
44
|
+
end
|
45
|
+
@template = Liquid::Template.parse(document_content)
|
46
|
+
@template.render
|
47
|
+
return Videojuicer::SDKLiquidHelper::Filters::AssetBlock.asset_ids
|
48
|
+
end
|
49
|
+
|
50
|
+
@@asset_types.each do |type|
|
51
|
+
sym_type = type.to_sym
|
52
|
+
define_method "#{type}_asset_ids" do
|
53
|
+
asset_ids[sym_type]
|
54
|
+
end
|
55
|
+
define_method "#{type}_assets" do
|
56
|
+
@assets ||= {}
|
57
|
+
@assets[sym_type] ||= Videojuicer::Asset.const_get(type.capitalize.to_sym).all :id => asset_ids[sym_type].join(',')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
38
61
|
end
|
39
62
|
end
|
@@ -131,6 +131,8 @@ module Videojuicer
|
|
131
131
|
# > "id.lt" => "9" #=> Returns only records with ID less than 9
|
132
132
|
# > "id.gte" => "9" #=> Returns only records with ID greater than or equal to 9
|
133
133
|
# > "id.lte" => "9" #=> Returns only records with ID less than or equal to than 9
|
134
|
+
# Range operations are also supported e.g.
|
135
|
+
# > :id => '1,2,3'
|
134
136
|
def all(options={})
|
135
137
|
# Get a proxy
|
136
138
|
options = (options.empty?)? {} : {parameter_name=>options} # FIXME this is a hacky workaround for singleton scope.
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Videojuicer
|
2
|
+
module SDKLiquidHelper
|
3
|
+
module Filters
|
4
|
+
|
5
|
+
class AssetBlock < ::Liquid::Block
|
6
|
+
|
7
|
+
@@asset_ids = {}
|
8
|
+
|
9
|
+
def self.reset!
|
10
|
+
@@asset_ids = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.asset_ids
|
14
|
+
@@asset_ids.deep_symbolize
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize tag_name, args, tokens
|
18
|
+
@@asset_ids[tag_name] ||= []
|
19
|
+
@@asset_ids[tag_name] << tokens.to_s.gsub(/\{% id ([0-9]+){1,10} %\}.*/, "\\1").strip
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
23
|
+
def render; nil; end;
|
24
|
+
|
25
|
+
def unknown_tag tag_name, args, tokens; nil; end;
|
26
|
+
|
27
|
+
end#end class
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/videojuicer/user.rb
CHANGED
@@ -10,6 +10,7 @@ module Videojuicer
|
|
10
10
|
property :password_confirmation, String
|
11
11
|
property :created_at, DateTime
|
12
12
|
property :updated_at, DateTime
|
13
|
+
property :roles, Array, :writer => :readonly
|
13
14
|
|
14
15
|
# Authenticates the given login and password and returns
|
15
16
|
# a user if the details are correct. Requires a Master token.
|
data/spec/presentation_spec.rb
CHANGED
@@ -21,5 +21,48 @@ describe Videojuicer::Presentation do
|
|
21
21
|
it_should_behave_like "an embeddable"
|
22
22
|
end
|
23
23
|
|
24
|
+
describe "fetching asset ids" do
|
25
|
+
|
26
|
+
before :each do
|
27
|
+
@presentation = @klass.gen
|
28
|
+
Videojuicer::Asset::Video.create :file_name => 'foo.mp4'
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should fetch asset ids" do
|
32
|
+
@presentation.document_content = "{% video %}{% id 1 %}{% endvideo %}"
|
33
|
+
@presentation.asset_ids.should_not == nil
|
34
|
+
@presentation.asset_ids[:video].first.should == '1'
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should fetch longer asset ids" do
|
38
|
+
@presentation.document_content = "{% video %}{% id 8003 %}{% endvideo %}"
|
39
|
+
@presentation.asset_ids.should_not == nil
|
40
|
+
@presentation.asset_ids[:video].first.should == '8003'
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should deal with non-standard document_content" do
|
44
|
+
@presentation.document_content = "{% video %} {% id 200 %} {% endvideo %} {% audio %} {% id 122 %} {% endaudio %}"
|
45
|
+
@presentation.asset_ids.should_not == nil
|
46
|
+
@presentation.asset_ids[:video].first.should == '200'
|
47
|
+
@presentation.asset_ids[:audio].first.should == '122'
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should deal with xml too" do
|
51
|
+
@presentation.document_content = '<seq><par>{% video %} {% id 200 %} {% endvideo %}{% image %} {% id 200 %} {% endimage %}</par><par>{% video %} {% id 200 %} {% endvideo %}</par></seq>'
|
52
|
+
@presentation.asset_ids.should_not == nil
|
53
|
+
@presentation.asset_ids[:video].first.should == '200'
|
54
|
+
@presentation.asset_ids[:image].first.should == '200'
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should fetch assets too" do
|
58
|
+
@presentation.document_content = "{% video %}{% id 1 %}{% endvideo %}"
|
59
|
+
@presentation.asset_ids
|
60
|
+
@presentation.video_assets.first.should_not == nil
|
61
|
+
@presentation.video_assets.first.id.should == 1
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
|
24
67
|
|
25
68
|
end
|
data/vj-sdk.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{vj-sdk}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.6.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["danski", "thejohnny", "knowtheory", "sixones", "btab"]
|
12
|
-
s.date = %q{2010-07-
|
12
|
+
s.date = %q{2010-07-27}
|
13
13
|
s.email = %q{dan@videojuicer.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
@@ -60,6 +60,7 @@ Gem::Specification.new do |s|
|
|
60
60
|
"lib/videojuicer/session.rb",
|
61
61
|
"lib/videojuicer/shared/configurable.rb",
|
62
62
|
"lib/videojuicer/shared/exceptions.rb",
|
63
|
+
"lib/videojuicer/shared/liquid_helper.rb",
|
63
64
|
"lib/videojuicer/user.rb",
|
64
65
|
"spec/assets/audio_spec.rb",
|
65
66
|
"spec/assets/document_spec.rb",
|
@@ -107,7 +108,7 @@ Gem::Specification.new do |s|
|
|
107
108
|
s.homepage = %q{http://github.com/videojuicer/vj-sdk}
|
108
109
|
s.rdoc_options = ["--charset=UTF-8"]
|
109
110
|
s.require_paths = ["lib"]
|
110
|
-
s.rubygems_version = %q{1.3.
|
111
|
+
s.rubygems_version = %q{1.3.7}
|
111
112
|
s.summary = %q{Videojuicer core-sdk}
|
112
113
|
s.test_files = [
|
113
114
|
"spec/assets/audio_spec.rb",
|
@@ -149,19 +150,22 @@ Gem::Specification.new do |s|
|
|
149
150
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
150
151
|
s.specification_version = 3
|
151
152
|
|
152
|
-
if Gem::Version.new(Gem::
|
153
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
153
154
|
s.add_runtime_dependency(%q<json>, [">= 1.0"])
|
154
155
|
s.add_runtime_dependency(%q<ruby-hmac>, [">= 0.3.2"])
|
155
156
|
s.add_runtime_dependency(%q<mash>, [">= 0.0.3"])
|
157
|
+
s.add_runtime_dependency(%q<liquid>, ["= 2.0.0"])
|
156
158
|
else
|
157
159
|
s.add_dependency(%q<json>, [">= 1.0"])
|
158
160
|
s.add_dependency(%q<ruby-hmac>, [">= 0.3.2"])
|
159
161
|
s.add_dependency(%q<mash>, [">= 0.0.3"])
|
162
|
+
s.add_dependency(%q<liquid>, ["= 2.0.0"])
|
160
163
|
end
|
161
164
|
else
|
162
165
|
s.add_dependency(%q<json>, [">= 1.0"])
|
163
166
|
s.add_dependency(%q<ruby-hmac>, [">= 0.3.2"])
|
164
167
|
s.add_dependency(%q<mash>, [">= 0.0.3"])
|
168
|
+
s.add_dependency(%q<liquid>, ["= 2.0.0"])
|
165
169
|
end
|
166
170
|
end
|
167
171
|
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vj-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 7
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
- 5
|
8
8
|
- 6
|
9
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.6.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- danski
|
@@ -18,50 +19,72 @@ autorequire:
|
|
18
19
|
bindir: bin
|
19
20
|
cert_chain: []
|
20
21
|
|
21
|
-
date: 2010-07-
|
22
|
+
date: 2010-07-27 00:00:00 +01:00
|
22
23
|
default_executable:
|
23
24
|
dependencies:
|
24
25
|
- !ruby/object:Gem::Dependency
|
25
|
-
name: json
|
26
26
|
prerelease: false
|
27
|
-
|
27
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
28
29
|
requirements:
|
29
30
|
- - ">="
|
30
31
|
- !ruby/object:Gem::Version
|
32
|
+
hash: 15
|
31
33
|
segments:
|
32
34
|
- 1
|
33
35
|
- 0
|
34
36
|
version: "1.0"
|
37
|
+
name: json
|
38
|
+
requirement: *id001
|
35
39
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
40
|
- !ruby/object:Gem::Dependency
|
38
|
-
name: ruby-hmac
|
39
41
|
prerelease: false
|
40
|
-
|
42
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
41
44
|
requirements:
|
42
45
|
- - ">="
|
43
46
|
- !ruby/object:Gem::Version
|
47
|
+
hash: 23
|
44
48
|
segments:
|
45
49
|
- 0
|
46
50
|
- 3
|
47
51
|
- 2
|
48
52
|
version: 0.3.2
|
53
|
+
name: ruby-hmac
|
54
|
+
requirement: *id002
|
49
55
|
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
56
|
- !ruby/object:Gem::Dependency
|
52
|
-
name: mash
|
53
57
|
prerelease: false
|
54
|
-
|
58
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
55
60
|
requirements:
|
56
61
|
- - ">="
|
57
62
|
- !ruby/object:Gem::Version
|
63
|
+
hash: 25
|
58
64
|
segments:
|
59
65
|
- 0
|
60
66
|
- 0
|
61
67
|
- 3
|
62
68
|
version: 0.0.3
|
69
|
+
name: mash
|
70
|
+
requirement: *id003
|
71
|
+
type: :runtime
|
72
|
+
- !ruby/object:Gem::Dependency
|
73
|
+
prerelease: false
|
74
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - "="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
hash: 15
|
80
|
+
segments:
|
81
|
+
- 2
|
82
|
+
- 0
|
83
|
+
- 0
|
84
|
+
version: 2.0.0
|
85
|
+
name: liquid
|
86
|
+
requirement: *id004
|
63
87
|
type: :runtime
|
64
|
-
version_requirements: *id003
|
65
88
|
description:
|
66
89
|
email: dan@videojuicer.com
|
67
90
|
executables: []
|
@@ -116,6 +139,7 @@ files:
|
|
116
139
|
- lib/videojuicer/session.rb
|
117
140
|
- lib/videojuicer/shared/configurable.rb
|
118
141
|
- lib/videojuicer/shared/exceptions.rb
|
142
|
+
- lib/videojuicer/shared/liquid_helper.rb
|
119
143
|
- lib/videojuicer/user.rb
|
120
144
|
- spec/assets/audio_spec.rb
|
121
145
|
- spec/assets/document_spec.rb
|
@@ -169,23 +193,27 @@ rdoc_options:
|
|
169
193
|
require_paths:
|
170
194
|
- lib
|
171
195
|
required_ruby_version: !ruby/object:Gem::Requirement
|
196
|
+
none: false
|
172
197
|
requirements:
|
173
198
|
- - ">="
|
174
199
|
- !ruby/object:Gem::Version
|
200
|
+
hash: 3
|
175
201
|
segments:
|
176
202
|
- 0
|
177
203
|
version: "0"
|
178
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
|
+
none: false
|
179
206
|
requirements:
|
180
207
|
- - ">="
|
181
208
|
- !ruby/object:Gem::Version
|
209
|
+
hash: 3
|
182
210
|
segments:
|
183
211
|
- 0
|
184
212
|
version: "0"
|
185
213
|
requirements: []
|
186
214
|
|
187
215
|
rubyforge_project:
|
188
|
-
rubygems_version: 1.3.
|
216
|
+
rubygems_version: 1.3.7
|
189
217
|
signing_key:
|
190
218
|
specification_version: 3
|
191
219
|
summary: Videojuicer core-sdk
|