helix 0.0.2.4.pre → 0.0.2.5.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|