helix 0.0.2.4.pre → 0.0.2.5.pre
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/helix.rb +1 -0
- data/lib/helix/album.rb +4 -0
- data/lib/helix/audio_playlist.rb +8 -0
- data/lib/helix/base.rb +3 -1
- data/lib/helix/config.rb +1 -0
- data/lib/helix/library.rb +33 -0
- data/lib/helix/media.rb +2 -1
- data/lib/helix/playlist.rb +8 -0
- data/lib/helix/video.rb +30 -4
- data/lib/helix/video_playlist.rb +8 -0
- data/spec/album_spec.rb +8 -0
- data/spec/audio_playlist_spec.rb +0 -0
- data/spec/base_spec.rb +6 -1
- data/spec/config_spec.rb +10 -0
- data/spec/library_spec.rb +36 -0
- data/spec/media_spec.rb +16 -8
- data/spec/playlist_spec.rb +0 -0
- data/spec/video_playlist_spec.rb +0 -0
- data/spec/video_spec.rb +66 -1
- metadata +66 -67
data/lib/helix.rb
CHANGED
data/lib/helix/album.rb
CHANGED
data/lib/helix/base.rb
CHANGED
@@ -23,6 +23,7 @@ module Helix
|
|
23
23
|
# @param [Hash] opts a hash of options for parameters passed into the HTTP GET
|
24
24
|
# @return [Array] The array of instance objects for a class.
|
25
25
|
def self.find_all(opts={})
|
26
|
+
RestClient.log = 'helix.log' if opts.delete(:log)
|
26
27
|
data_sets = get_data_sets(opts)
|
27
28
|
return [] if data_sets.nil?
|
28
29
|
data_sets.map { |attrs| self.new( attributes: massage_attrs(attrs),
|
@@ -126,7 +127,7 @@ module Helix
|
|
126
127
|
begin
|
127
128
|
@attributes[method_sym.to_s]
|
128
129
|
rescue
|
129
|
-
raise NoMethodError, "#{method_sym} is not recognized within #{self.class.to_s}'s @attributes"
|
130
|
+
raise NoMethodError, "#{method_sym} is not recognized within #{self.class.to_s}'s methods or @attributes"
|
130
131
|
end
|
131
132
|
end
|
132
133
|
|
@@ -161,6 +162,7 @@ module Helix
|
|
161
162
|
attrs["custom_fields"].delete_if { |key, val| key.to_s =~ /^@/ }
|
162
163
|
cfs = []
|
163
164
|
attrs["custom_fields"].each do |key, val|
|
165
|
+
val = [val] unless val.is_a?(Array)
|
164
166
|
val.each do |val_val|
|
165
167
|
cfs << { "name" => key, "value" => val_val.to_s }
|
166
168
|
end
|
data/lib/helix/config.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'helix/media'
|
2
|
+
|
3
|
+
module Helix
|
4
|
+
|
5
|
+
class Library < Media
|
6
|
+
|
7
|
+
# The class name, to be used by supporting classes. Such as Config which uses
|
8
|
+
# this method as a way to build URLs.
|
9
|
+
#
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# Helix::Library.media_type_sym #=> :library
|
13
|
+
#
|
14
|
+
# @return [Symbol] Name of the class.
|
15
|
+
def self.media_type_sym; :library; end
|
16
|
+
|
17
|
+
# Creates a string associated with a class name pluralized
|
18
|
+
#
|
19
|
+
# @example
|
20
|
+
# Helix::Library.plural_media_type #=> "libraries"
|
21
|
+
#
|
22
|
+
# @return [String] The class name pluralized
|
23
|
+
def self.plural_media_type
|
24
|
+
"#{self.media_type_sym.to_s.gsub(/y/, '')}ies"
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.known_attributes
|
28
|
+
[:player_profile, :ingest_profile, :secure_stream_callback_url, :hooks_attributes]
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/lib/helix/media.rb
CHANGED
@@ -30,6 +30,7 @@ module Helix
|
|
30
30
|
# @param [String] guid an id in guid form.
|
31
31
|
# @return [Base] An instance of Helix::Base
|
32
32
|
def self.find(guid)
|
33
|
+
raise ArgumentError.new("find requires a non-nil guid argument - received a nil argument.") if guid.nil?
|
33
34
|
item = self.new(attributes: { guid_name => guid }, config: config)
|
34
35
|
item.load
|
35
36
|
end
|
@@ -65,4 +66,4 @@ module Helix
|
|
65
66
|
self
|
66
67
|
end
|
67
68
|
end
|
68
|
-
end
|
69
|
+
end
|
data/lib/helix/video.rb
CHANGED
@@ -34,17 +34,43 @@ module Helix
|
|
34
34
|
# @return [String] Stillframe jpg data, save it to a file with extension .jpg.
|
35
35
|
def self.get_stillframe(guid, opts={})
|
36
36
|
RestClient.log = 'helix.log' if opts.delete(:log)
|
37
|
-
|
37
|
+
url = get_stillframe_url(guid, opts)
|
38
|
+
RestClient.get(url)
|
39
|
+
end
|
40
|
+
|
41
|
+
def download(opts={})
|
42
|
+
generic_download(opts.merge(action: :file))
|
43
|
+
end
|
44
|
+
|
45
|
+
def play(opts={})
|
46
|
+
generic_download(opts.merge(action: :play))
|
47
|
+
end
|
48
|
+
|
49
|
+
def stillframe(opts={})
|
50
|
+
self.class.get_stillframe(self.guid, opts)
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def self.get_stillframe_dimensions(opts)
|
38
56
|
width = opts[:width].to_s + "w" unless opts[:width].nil?
|
39
57
|
height = opts[:height].to_s + "h" unless opts[:height].nil?
|
40
58
|
width = "original" if opts[:width].nil? && opts[:height].nil?
|
59
|
+
[width, height]
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.get_stillframe_url(guid, opts)
|
63
|
+
server = opts[:server] || config.credentials[:server] || "service-staging"
|
64
|
+
width, height = get_stillframe_dimensions(opts)
|
41
65
|
url = "#{server}.twistage.com/videos/#{guid}/screenshots/"
|
42
66
|
url << "#{width.to_s}#{height.to_s}.jpg"
|
43
|
-
RestClient.get(url)
|
44
67
|
end
|
45
68
|
|
46
|
-
def
|
47
|
-
|
69
|
+
def generic_download(opts)
|
70
|
+
content_type = opts[:content_type] || ''
|
71
|
+
url = config.build_url(action: opts[:action], content_type: content_type, guid: guid, media_type: plural_media_type)
|
72
|
+
RestClient.get(url, params: {signature: config.signature(:view)})
|
48
73
|
end
|
74
|
+
|
49
75
|
end
|
50
76
|
end
|
data/spec/album_spec.rb
CHANGED
@@ -13,6 +13,14 @@ describe Helix::Album do
|
|
13
13
|
it { should respond_to(crud_call) }
|
14
14
|
end
|
15
15
|
|
16
|
+
describe ".known_attributes" do
|
17
|
+
let(:meth) { :known_attributes }
|
18
|
+
let(:expected_attrs) { [:title, :description] }
|
19
|
+
it "should equal expected_attrs" do
|
20
|
+
expect(klass.send(meth)).to eq(expected_attrs)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
16
24
|
describe "Constants"
|
17
25
|
|
18
26
|
describe "an instance" do
|
File without changes
|
data/spec/base_spec.rb
CHANGED
@@ -167,6 +167,11 @@ describe Helix::Base do
|
|
167
167
|
it "should return the custom_hash in its form" do
|
168
168
|
expect(klass.send(meth, expected)).to eq(expected)
|
169
169
|
end
|
170
|
+
let(:custom_hash_with_false) { { "custom_fields" => {"boole"=>false, "@type"=>"hash"} } }
|
171
|
+
let(:expected_with_false) { { "custom_fields" => [{"name"=>"boole", "value"=>"false"}] } }
|
172
|
+
it "should turn custom_hash into expected" do
|
173
|
+
expect(klass.send(meth, custom_hash_with_false)).to eq(expected_with_false)
|
174
|
+
end
|
170
175
|
end
|
171
176
|
|
172
177
|
describe "an instance" do
|
@@ -296,7 +301,7 @@ describe Helix::Base do
|
|
296
301
|
context "and @attributes[method_sym.to_s] raises an exception" do
|
297
302
|
before(:each) do mock_attributes.should_receive(:[]).with(method_sym.to_s).and_raise("some exception") end
|
298
303
|
it "should raise a NoMethodError" do
|
299
|
-
msg = "#{method_sym} is not recognized within #{klass}'s @attributes"
|
304
|
+
msg = "#{method_sym} is not recognized within #{klass}'s methods or @attributes"
|
300
305
|
expect(lambda { obj.send(meth, method_sym) }).to raise_error(msg)
|
301
306
|
end
|
302
307
|
end
|
data/spec/config_spec.rb
CHANGED
@@ -241,6 +241,16 @@ describe Helix::Config do
|
|
241
241
|
end
|
242
242
|
end
|
243
243
|
end
|
244
|
+
dl_opts = {action: :file, content_type: '', guid: :the_guid, media_type: :videos}
|
245
|
+
context "when given opts of #{dl_opts}" do
|
246
|
+
subject { obj.send(meth, dl_opts) }
|
247
|
+
it { should eq("http://example.com/videos/the_guid/file") }
|
248
|
+
end
|
249
|
+
dp_opts = {action: :play, content_type: '', guid: :the_guid, media_type: :videos}
|
250
|
+
context "when given opts of #{dp_opts}" do
|
251
|
+
subject { obj.send(meth, dp_opts) }
|
252
|
+
it { should eq("http://example.com/videos/the_guid/play") }
|
253
|
+
end
|
244
254
|
end
|
245
255
|
|
246
256
|
describe "#clear_signatures!" do
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
require 'helix'
|
3
|
+
|
4
|
+
describe Helix::Library do
|
5
|
+
|
6
|
+
let(:klass) { Helix::Library }
|
7
|
+
subject { klass }
|
8
|
+
its(:guid_name) { should eq('library_id') }
|
9
|
+
its(:media_type_sym) { should be(:library) }
|
10
|
+
its(:plural_media_type) { should eq('libraries') }
|
11
|
+
[:find, :create, :all, :find_all, :where].each do |crud_call|
|
12
|
+
it { should respond_to(crud_call) }
|
13
|
+
end
|
14
|
+
|
15
|
+
describe ".known_attributes" do
|
16
|
+
let(:meth) { :known_attributes }
|
17
|
+
let(:expected_attrs) { [ :player_profile,
|
18
|
+
:ingest_profile,
|
19
|
+
:secure_stream_callback_url,
|
20
|
+
:hooks_attributes] }
|
21
|
+
it "should equal expected_attrs" do
|
22
|
+
expect(klass.send(meth)).to eq(expected_attrs)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "Constants"
|
27
|
+
|
28
|
+
describe "an instance" do
|
29
|
+
let(:obj) { klass.new({'library_id' => 'some_library_id'}) }
|
30
|
+
subject { obj }
|
31
|
+
its(:media_type_sym) { should be(:library) }
|
32
|
+
[:destroy, :update].each do |crud_call|
|
33
|
+
it { should respond_to(crud_call) }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/spec/media_spec.rb
CHANGED
@@ -51,7 +51,6 @@ describe Helix::Media do
|
|
51
51
|
its(:arity) { should eq(1) }
|
52
52
|
before(:each) do Helix::Config.stub(:instance) { mock_config } end
|
53
53
|
context "when given a Helix::Config instance and a guid" do
|
54
|
-
let(:guid) { :a_guid }
|
55
54
|
let(:guid_name) { :the_guid_name }
|
56
55
|
let(:mock_attrs) { mock(Object, :[]= => :output_of_setting_val) }
|
57
56
|
before(:each) do
|
@@ -59,13 +58,22 @@ describe Helix::Media do
|
|
59
58
|
klass.stub(:guid_name) { guid_name }
|
60
59
|
klass.stub(:new) { mock_obj }
|
61
60
|
end
|
62
|
-
|
63
|
-
|
64
|
-
|
61
|
+
context "and the guid is nil" do
|
62
|
+
it "should raise an ArgumentError complaining about a nil guid" do
|
63
|
+
msg = 'find requires a non-nil guid argument - received a nil argument.'
|
64
|
+
lambda { klass.send(meth, nil) }.should raise_error(ArgumentError, msg)
|
65
|
+
end
|
65
66
|
end
|
66
|
-
|
67
|
-
|
68
|
-
|
67
|
+
context "and the guid is non-nil" do
|
68
|
+
let(:guid) { :a_guid }
|
69
|
+
it "should instantiate with {attributes: guid_name => the_guid, config: config}" do
|
70
|
+
klass.should_receive(:new).with({attributes: {guid_name => guid}, config: mock_config})
|
71
|
+
klass.send(meth, guid)
|
72
|
+
end
|
73
|
+
it "should load" do
|
74
|
+
mock_obj.should_receive(:load)
|
75
|
+
klass.send(meth, guid)
|
76
|
+
end
|
69
77
|
end
|
70
78
|
end
|
71
79
|
end
|
@@ -142,4 +150,4 @@ describe Helix::Media do
|
|
142
150
|
end
|
143
151
|
end
|
144
152
|
end
|
145
|
-
end
|
153
|
+
end
|
File without changes
|
File without changes
|
data/spec/video_spec.rb
CHANGED
@@ -24,20 +24,85 @@ describe Helix::Video do
|
|
24
24
|
let(:obj) { klass.new({video_id: 'some_video_guid'}) }
|
25
25
|
subject { obj }
|
26
26
|
its(:media_type_sym) { should be(:video) }
|
27
|
+
|
28
|
+
describe "#download" do
|
29
|
+
let(:meth) { :download }
|
30
|
+
let(:mock_config) { mock(Helix::Config, build_url: :the_built_url, signature: :some_sig) }
|
31
|
+
subject { obj.method(meth) }
|
32
|
+
let(:params) { { params: {signature: :some_sig } } }
|
33
|
+
before do
|
34
|
+
obj.stub(:config) { mock_config }
|
35
|
+
obj.stub(:guid) { :some_guid }
|
36
|
+
obj.stub(:plural_media_type) { :media_type }
|
37
|
+
RestClient.stub(:get) { '' }
|
38
|
+
end
|
39
|
+
{ '' => '', mp3: :mp3, nil => '' }.each do |arg,actual|
|
40
|
+
build_url_h = {action: :file, content_type: actual, guid: :some_guid, media_type: :media_type}
|
41
|
+
context "when given {content_type: #{arg}" do
|
42
|
+
it "should build_url(#{build_url_h})" do
|
43
|
+
mock_config.should_receive(:build_url).with(build_url_h)
|
44
|
+
obj.send(meth, content_type: arg)
|
45
|
+
end
|
46
|
+
it "should get a view signature" do
|
47
|
+
mock_config.should_receive(:signature).with(:view) { :some_sig }
|
48
|
+
obj.send(meth, content_type: arg)
|
49
|
+
end
|
50
|
+
it "should return an HTTP get to the built URL with the view sig" do
|
51
|
+
mock_config.stub(:build_url).with(build_url_h) { :the_url }
|
52
|
+
RestClient.should_receive(:get).with(:the_url, params) { :expected }
|
53
|
+
expect(obj.send(meth, content_type: arg)).to be(:expected)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#play" do
|
60
|
+
let(:meth) { :play }
|
61
|
+
let(:mock_config) { mock(Helix::Config, build_url: :the_built_url, signature: :some_sig) }
|
62
|
+
subject { obj.method(meth) }
|
63
|
+
let(:params) { { params: {signature: :some_sig } } }
|
64
|
+
before do
|
65
|
+
obj.stub(:config) { mock_config }
|
66
|
+
obj.stub(:guid) { :some_guid }
|
67
|
+
obj.stub(:plural_media_type) { :media_type }
|
68
|
+
RestClient.stub(:get) { '' }
|
69
|
+
end
|
70
|
+
{ '' => '', mp3: :mp3, nil => '' }.each do |arg,actual|
|
71
|
+
build_url_h = {action: :play, content_type: actual, guid: :some_guid, media_type: :media_type}
|
72
|
+
context "when given {content_type: #{arg}" do
|
73
|
+
it "should build_url(#{build_url_h})" do
|
74
|
+
mock_config.should_receive(:build_url).with(build_url_h)
|
75
|
+
obj.send(meth, content_type: arg)
|
76
|
+
end
|
77
|
+
it "should get a view signature" do
|
78
|
+
mock_config.should_receive(:signature).with(:view) { :some_sig }
|
79
|
+
obj.send(meth, content_type: arg)
|
80
|
+
end
|
81
|
+
it "should return an HTTP get to the built URL with the view sig" do
|
82
|
+
mock_config.stub(:build_url).with(build_url_h) { :the_url }
|
83
|
+
RestClient.should_receive(:get).with(:the_url, params) { :expected }
|
84
|
+
expect(obj.send(meth, content_type: arg)).to be(:expected)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
27
90
|
describe "#stillframe" do
|
28
91
|
let(:meth) { :stillframe }
|
29
92
|
let(:mock_config) { mock(Helix::Config) }
|
30
93
|
subject { obj.method(meth) }
|
31
94
|
its(:arity) { should eq(-1) }
|
32
95
|
it "should call self.class.get_stillframe" do
|
33
|
-
obj.stub
|
96
|
+
obj.stub(:guid).and_return :some_guid
|
34
97
|
klass.should_receive(:get_stillframe)
|
35
98
|
obj.send(meth)
|
36
99
|
end
|
37
100
|
end
|
101
|
+
|
38
102
|
[:destroy, :update].each do |crud_call|
|
39
103
|
it { should respond_to(crud_call) }
|
40
104
|
end
|
105
|
+
|
41
106
|
end
|
42
107
|
|
43
108
|
### CLASS METHODS
|
metadata
CHANGED
@@ -1,119 +1,118 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: helix
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.2.4.pre
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease: 8
|
5
|
+
version: 0.0.2.5.pre
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Twistage, Inc
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
|
13
|
+
date: 2013-02-14 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
15
16
|
name: json
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 1.5.4
|
22
|
-
type: :runtime
|
23
17
|
prerelease: false
|
24
|
-
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
19
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
29
23
|
version: 1.5.4
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: rest-client
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - '='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: 1.6.7
|
38
24
|
type: :runtime
|
25
|
+
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rest-client
|
39
28
|
prerelease: false
|
40
|
-
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
30
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
31
|
+
requirements:
|
32
|
+
- - "="
|
33
|
+
- !ruby/object:Gem::Version
|
45
34
|
version: 1.6.7
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: nori
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - '='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 1.1.3
|
54
35
|
type: :runtime
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: nori
|
55
39
|
prerelease: false
|
56
|
-
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
41
|
none: false
|
58
|
-
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
42
|
+
requirements:
|
43
|
+
- - "="
|
44
|
+
- !ruby/object:Gem::Version
|
61
45
|
version: 1.1.3
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id003
|
62
48
|
description: Provides helper libraries for Ruby access to the Twistage API
|
63
49
|
email: kbaird@twistage.com
|
64
50
|
executables: []
|
51
|
+
|
65
52
|
extensions: []
|
53
|
+
|
66
54
|
extra_rdoc_files: []
|
67
|
-
|
55
|
+
|
56
|
+
files:
|
68
57
|
- lib/helix.rb
|
69
|
-
- lib/helix/
|
70
|
-
- lib/helix/base.rb
|
71
|
-
- lib/helix/image.rb
|
58
|
+
- lib/helix/tag.rb
|
72
59
|
- lib/helix/media.rb
|
60
|
+
- lib/helix/statistics.rb
|
61
|
+
- lib/helix/library.rb
|
62
|
+
- lib/helix/audio_playlist.rb
|
73
63
|
- lib/helix/durationed_media.rb
|
74
|
-
- lib/helix/
|
64
|
+
- lib/helix/playlist.rb
|
65
|
+
- lib/helix/video_playlist.rb
|
75
66
|
- lib/helix/config.rb
|
76
|
-
- lib/helix/tag.rb
|
77
67
|
- lib/helix/video.rb
|
78
68
|
- lib/helix/track.rb
|
79
|
-
- lib/helix/
|
80
|
-
-
|
69
|
+
- lib/helix/base.rb
|
70
|
+
- lib/helix/image.rb
|
71
|
+
- lib/helix/album.rb
|
72
|
+
- lib/helix/exceptions.rb
|
81
73
|
- spec/spec_helper.rb
|
82
|
-
- spec/
|
74
|
+
- spec/audio_playlist_spec.rb
|
83
75
|
- spec/config_spec.rb
|
84
|
-
- spec/media_spec.rb
|
85
76
|
- spec/image_spec.rb
|
77
|
+
- spec/media_spec.rb
|
78
|
+
- spec/durationed_media_spec.rb
|
86
79
|
- spec/album_spec.rb
|
80
|
+
- spec/statistics_spec.rb
|
81
|
+
- spec/tag_spec.rb
|
82
|
+
- spec/video_playlist_spec.rb
|
87
83
|
- spec/track_spec.rb
|
84
|
+
- spec/video_spec.rb
|
85
|
+
- spec/playlist_spec.rb
|
86
|
+
- spec/library_spec.rb
|
88
87
|
- spec/base_spec.rb
|
89
|
-
- spec/durationed_media_spec.rb
|
90
|
-
- spec/tag_spec.rb
|
91
88
|
- LICENSE
|
92
89
|
- README.md
|
93
90
|
homepage: https://github.com/Twistage/helix/
|
94
|
-
licenses:
|
91
|
+
licenses:
|
95
92
|
- 3-Clause BSD
|
96
93
|
post_install_message:
|
97
94
|
rdoc_options: []
|
98
|
-
|
95
|
+
|
96
|
+
require_paths:
|
99
97
|
- lib
|
100
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
99
|
none: false
|
102
|
-
requirements:
|
103
|
-
- -
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version:
|
106
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: "0"
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
105
|
none: false
|
108
|
-
requirements:
|
109
|
-
- -
|
110
|
-
- !ruby/object:Gem::Version
|
106
|
+
requirements:
|
107
|
+
- - ">"
|
108
|
+
- !ruby/object:Gem::Version
|
111
109
|
version: 1.3.1
|
112
110
|
requirements: []
|
111
|
+
|
113
112
|
rubyforge_project:
|
114
|
-
rubygems_version: 1.8.
|
113
|
+
rubygems_version: 1.8.11
|
115
114
|
signing_key:
|
116
115
|
specification_version: 3
|
117
116
|
summary: Wrapper library for the video API
|
118
117
|
test_files: []
|
119
|
-
|
118
|
+
|