helix 0.0.2.6.pre → 0.0.2.7.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/helix/base.rb +2 -1
- data/lib/helix/config.rb +2 -1
- data/lib/helix/media.rb +2 -1
- data/lib/helix/statistics.rb +6 -3
- data/lib/helix/video.rb +19 -1
- data/spec/base_spec.rb +6 -2
- data/spec/config_spec.rb +19 -4
- data/spec/media_spec.rb +5 -0
- data/spec/statistics_spec.rb +12 -0
- data/spec/video_spec.rb +14 -4
- metadata +23 -22
data/lib/helix/base.rb
CHANGED
@@ -22,7 +22,8 @@ module Helix
|
|
22
22
|
#
|
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
|
-
def self.find_all(
|
25
|
+
def self.find_all(original_opts={})
|
26
|
+
opts = original_opts.clone
|
26
27
|
RestClient.log = 'helix.log' if opts.delete(:log)
|
27
28
|
data_sets = get_data_sets(opts)
|
28
29
|
return [] if data_sets.nil?
|
data/lib/helix/config.rb
CHANGED
@@ -95,7 +95,8 @@ module Helix
|
|
95
95
|
# @param [String] url the base part of the URL to be used
|
96
96
|
# @param [Hash] opts a hash of options for building URL additions
|
97
97
|
# @return [String] The full RESTful URL string object
|
98
|
-
def get_response(url,
|
98
|
+
def get_response(url, original_opts={})
|
99
|
+
opts = original_opts.clone
|
99
100
|
sig_type = opts.delete(:sig_type)
|
100
101
|
params = opts.merge(signature: signature(sig_type, opts))
|
101
102
|
response = RestClient.get(url, params: params)
|
data/lib/helix/media.rb
CHANGED
@@ -55,7 +55,8 @@ module Helix
|
|
55
55
|
#
|
56
56
|
# @param [Hash] opts a hash of attributes to update the instance with.
|
57
57
|
# @return [Base] Returns an instance of the class after update.
|
58
|
-
def update(
|
58
|
+
def update(original_opts={})
|
59
|
+
opts = original_opts.clone
|
59
60
|
RestClient.log = 'helix.log' if opts.delete(:log)
|
60
61
|
memo_cfg = config
|
61
62
|
url = memo_cfg.build_url(content_type: :xml,
|
data/lib/helix/statistics.rb
CHANGED
@@ -124,7 +124,8 @@ module Helix
|
|
124
124
|
|
125
125
|
private
|
126
126
|
|
127
|
-
def self.delivery(resource_label,
|
127
|
+
def self.delivery(resource_label, original_opts)
|
128
|
+
opts = original_opts.clone
|
128
129
|
memo_cfg = Helix::Config.instance
|
129
130
|
content_type = opts.delete(:content_type)
|
130
131
|
guid = opts.delete("#{resource_label}_id".to_sym)
|
@@ -137,13 +138,15 @@ module Helix
|
|
137
138
|
memo_cfg.get_response(url, {sig_type: :view}.merge(opts))
|
138
139
|
end
|
139
140
|
|
140
|
-
def self.ingest(resource_label,
|
141
|
+
def self.ingest(resource_label, original_opts)
|
142
|
+
opts = original_opts.clone
|
141
143
|
opts[:action] ||= :breakdown
|
142
144
|
action_prefix = ingest_action_prefix_for(resource_label)
|
143
145
|
storage(resource_label, opts.merge(action: :"#{action_prefix}/#{opts[:action]}"))
|
144
146
|
end
|
145
147
|
|
146
|
-
def self.storage(resource_label,
|
148
|
+
def self.storage(resource_label, original_opts)
|
149
|
+
opts = original_opts.clone
|
147
150
|
memo_cfg = Helix::Config.instance
|
148
151
|
content_type = opts.delete(:content_type)
|
149
152
|
action = opts.delete(:action) || storage_action_for(resource_label)
|
data/lib/helix/video.rb
CHANGED
@@ -32,16 +32,34 @@ module Helix
|
|
32
32
|
# @param [String] guid is the string containing the guid for the video.
|
33
33
|
# @param [Hash] opts a hash of options for building URL
|
34
34
|
# @return [String] Stillframe jpg data, save it to a file with extension .jpg.
|
35
|
-
def self.get_stillframe(guid,
|
35
|
+
def self.get_stillframe(guid, original_opts={})
|
36
|
+
opts = original_opts.clone
|
36
37
|
RestClient.log = 'helix.log' if opts.delete(:log)
|
37
38
|
url = get_stillframe_url(guid, opts)
|
38
39
|
RestClient.get(url)
|
39
40
|
end
|
40
41
|
|
42
|
+
# Used to download data for the given Video.
|
43
|
+
#
|
44
|
+
# @example
|
45
|
+
# video = Helix::Video.find("239c59483d346")
|
46
|
+
# video_data = video.download #=> xDC\xF1?\xE9*?\xFF\xD9
|
47
|
+
# File.open("my_video.mp4", "w") { |f| f.puts video_data }
|
48
|
+
#
|
49
|
+
# @param [Hash] opts a hash of options for building URL
|
50
|
+
# @return [String] Raw video data, save it to a file
|
41
51
|
def download(opts={})
|
42
52
|
generic_download(opts.merge(action: :file))
|
43
53
|
end
|
44
54
|
|
55
|
+
# Used to play the given Video.
|
56
|
+
#
|
57
|
+
# @example
|
58
|
+
# video = Helix::Video.find("239c59483d346")
|
59
|
+
# video_data = video.play #=> xDC\xF1?\xE9*?\xFF\xD9
|
60
|
+
#
|
61
|
+
# @param [Hash] opts a hash of options for building URL
|
62
|
+
# @return [String] Raw video data
|
45
63
|
def play(opts={})
|
46
64
|
generic_download(opts.merge(action: :play))
|
47
65
|
end
|
data/spec/base_spec.rb
CHANGED
@@ -43,6 +43,10 @@ describe Helix::Base do
|
|
43
43
|
let(:opts) { {opts_key1: :opts_val1} }
|
44
44
|
let(:plural_resource_label) { :videos }
|
45
45
|
before(:each) do klass.stub(:plural_resource_label) { plural_resource_label } end
|
46
|
+
it "should clone the opts arg" do
|
47
|
+
opts.should_receive(:clone) { opts }
|
48
|
+
klass.send(meth, opts)
|
49
|
+
end
|
46
50
|
it "should build a XML URL -> the_url" do
|
47
51
|
mock_config.should_receive(:build_url).with(content_type: :xml,
|
48
52
|
resource_label: plural_resource_label)
|
@@ -137,8 +141,8 @@ describe Helix::Base do
|
|
137
141
|
its(:arity) { should eq(1) }
|
138
142
|
let(:attrs) { Hash.new }
|
139
143
|
it "should call massage_custom_field_attrs and massage_time_attrs" do
|
140
|
-
klass.should_receive(:massage_time_attrs)
|
141
|
-
klass.should_receive(:massage_custom_field_attrs)
|
144
|
+
klass.should_receive(:massage_time_attrs) { attrs }
|
145
|
+
klass.should_receive(:massage_custom_field_attrs) { attrs }
|
142
146
|
klass.send(meth, attrs)
|
143
147
|
end
|
144
148
|
end
|
data/spec/config_spec.rb
CHANGED
@@ -307,25 +307,35 @@ describe Helix::Config do
|
|
307
307
|
subject { obj.method(meth) }
|
308
308
|
its(:arity) { should eq(-2) }
|
309
309
|
context "when given a url and options" do
|
310
|
-
let(:opts) { {sig_type: :the_sig_type} }
|
311
|
-
let(:params) { { params: { signature: 'mock_sig' } } }
|
310
|
+
let(:opts) { {sig_type: :the_sig_type, some_key: :some_value} }
|
311
|
+
let(:params) { { params: { signature: 'mock_sig', some_key: :some_value } } }
|
312
312
|
let(:returned_csv) { 'x,y,z' }
|
313
313
|
let(:returned_json) { '{"key": "val"}' }
|
314
314
|
let(:returned_xml) { '<root><inner>inner value</inner></root>' }
|
315
315
|
let(:json_parsed) { { "key" => "val" } }
|
316
316
|
let(:xml_parsed) { { "root" => { "inner" => "inner value" } } }
|
317
317
|
before(:each) do
|
318
|
-
obj.stub(:signature).with(:the_sig_type, opts) { 'mock_sig' }
|
318
|
+
obj.stub(:signature).with(:the_sig_type, opts.reject { |k,v| k == :sig_type }) { 'mock_sig' }
|
319
319
|
end
|
320
320
|
context "and the URL matches /json/" do
|
321
321
|
let(:url) { 'blah.json' }
|
322
|
+
before(:each) do RestClient.stub(:get).with(url, params) { returned_json } end
|
323
|
+
it "should clone the options arg" do
|
324
|
+
opts.should_receive(:clone) { opts }
|
325
|
+
obj.send(meth, url, opts)
|
326
|
+
end
|
322
327
|
it "should call RestClient.get and return a hash from parsed JSON" do
|
323
328
|
RestClient.should_receive(:get).with(url, params) { returned_json }
|
324
329
|
expect(obj.send(meth, url, opts)).to eq(json_parsed)
|
325
330
|
end
|
326
331
|
end
|
327
|
-
context "and the URL matches /
|
332
|
+
context "and the URL matches /xml/" do
|
328
333
|
let(:url) { 'blah.xml' }
|
334
|
+
before(:each) do RestClient.stub(:get).with(url, params) { returned_xml } end
|
335
|
+
it "should clone the options arg" do
|
336
|
+
opts.should_receive(:clone) { opts }
|
337
|
+
obj.send(meth, url, opts)
|
338
|
+
end
|
329
339
|
it "should call RestClient.get and return a hash from parsed XML" do
|
330
340
|
RestClient.should_receive(:get).with(url, params) { returned_xml }
|
331
341
|
expect(obj.send(meth, url, opts)).to eq(xml_parsed)
|
@@ -333,6 +343,11 @@ describe Helix::Config do
|
|
333
343
|
end
|
334
344
|
context "and the URL matches /csv/" do
|
335
345
|
let(:url) { 'blah.csv' }
|
346
|
+
before(:each) do RestClient.stub(:get).with(url, params) { returned_csv } end
|
347
|
+
it "should clone the options arg" do
|
348
|
+
opts.should_receive(:clone) { opts }
|
349
|
+
obj.send(meth, url, opts)
|
350
|
+
end
|
336
351
|
it "should call RestClient.get and return the raw CSV response" do
|
337
352
|
RestClient.should_receive(:get).with(url, params) { returned_csv }
|
338
353
|
expect(obj.send(meth, url, opts)).to eq(returned_csv)
|
data/spec/media_spec.rb
CHANGED
@@ -143,6 +143,11 @@ describe Helix::Media do
|
|
143
143
|
context "when given an opts argument of {key1: :value1}" do
|
144
144
|
let(:opts) { {key1: :value1} }
|
145
145
|
it_behaves_like "builds URL for update"
|
146
|
+
it "clones the opts arg" do
|
147
|
+
RestClient.stub(:put).with(:expected_url, {signature: 'some_sig', video: opts})
|
148
|
+
opts.should_receive(:clone) { opts }
|
149
|
+
obj.send(meth, opts)
|
150
|
+
end
|
146
151
|
it "should call RestClient.put(output_of_build_url, {signature: the_sig, video: opts}) and return instance of klass" do
|
147
152
|
RestClient.should_receive(:put).with(:expected_url, {signature: 'some_sig', video: opts})
|
148
153
|
expect(obj.send(meth, opts)).to be_an_instance_of(klass)
|
data/spec/statistics_spec.rb
CHANGED
@@ -17,6 +17,13 @@ describe Helix::Statistics do
|
|
17
17
|
|
18
18
|
describe "Constants"
|
19
19
|
|
20
|
+
shared_examples_for "clones the stats opts arg" do
|
21
|
+
it "should clone the opts arg" do
|
22
|
+
opts.should_receive(:clone) { opts }
|
23
|
+
mod.send(meth, opts)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
20
27
|
STATS_TYPES.each do |stats_type|
|
21
28
|
STATS_MEDIA_TYPES.each do |resource_label|
|
22
29
|
|
@@ -35,6 +42,7 @@ describe Helix::Statistics do
|
|
35
42
|
media_name = MEDIA_NAME_OF[resource_label] || resource_label
|
36
43
|
context "when given opts containing a :#{media_name}_id" do
|
37
44
|
let(:opts) { {group: :daily, "#{media_name}_id".to_sym => "the_#{media_name}_id".to_sym} }
|
45
|
+
it_behaves_like "clones the stats opts arg"
|
38
46
|
it "should refer to the Helix::Config instance" do
|
39
47
|
Helix::Config.should_receive(:instance) { mock_config }
|
40
48
|
mod.send(meth, opts)
|
@@ -75,6 +83,7 @@ describe Helix::Statistics do
|
|
75
83
|
end
|
76
84
|
context "when given opts NOT containing a :#{media_name}_id" do
|
77
85
|
let(:opts) { {group: :daily} }
|
86
|
+
it_behaves_like "clones the stats opts arg"
|
78
87
|
it "should refer to the Helix::Config instance" do
|
79
88
|
Helix::Config.should_receive(:instance) { mock_config }
|
80
89
|
mod.send(meth, opts)
|
@@ -114,6 +123,7 @@ describe Helix::Statistics do
|
|
114
123
|
context "when given opts" do
|
115
124
|
context "and opts has no :action key" do
|
116
125
|
let(:opts) { {group: :daily} }
|
126
|
+
it_behaves_like "clones the stats opts arg"
|
117
127
|
it "should refer to the Helix::Config instance" do
|
118
128
|
Helix::Config.should_receive(:instance) { mock_config }
|
119
129
|
mod.send(meth, opts)
|
@@ -130,6 +140,7 @@ describe Helix::Statistics do
|
|
130
140
|
[ :encode, :source, :breakdown ].each do |act|
|
131
141
|
context "and opts has an :action value of :#{act}" do
|
132
142
|
let(:opts) { {action: act, group: :daily} }
|
143
|
+
it_behaves_like "clones the stats opts arg"
|
133
144
|
it "should refer to the Helix::Config instance" do
|
134
145
|
Helix::Config.should_receive(:instance) { mock_config }
|
135
146
|
mod.send(meth, opts)
|
@@ -150,6 +161,7 @@ describe Helix::Statistics do
|
|
150
161
|
publish_name = INGEST_NAME_OF[resource_label] || 'ingest'
|
151
162
|
context "when given opts" do
|
152
163
|
let(:opts) { {group: :daily} }
|
164
|
+
it_behaves_like "clones the stats opts arg"
|
153
165
|
it "should refer to the Helix::Config instance" do
|
154
166
|
Helix::Config.should_receive(:instance) { mock_config }
|
155
167
|
mod.send(meth, opts)
|
data/spec/video_spec.rb
CHANGED
@@ -93,7 +93,7 @@ describe Helix::Video do
|
|
93
93
|
subject { obj.method(meth) }
|
94
94
|
its(:arity) { should eq(-1) }
|
95
95
|
it "should call self.class.get_stillframe" do
|
96
|
-
obj.stub(:guid)
|
96
|
+
obj.stub(:guid) { :some_guid }
|
97
97
|
klass.should_receive(:get_stillframe)
|
98
98
|
obj.send(meth)
|
99
99
|
end
|
@@ -143,7 +143,7 @@ describe Helix::Video do
|
|
143
143
|
context "when no height or width is passed in " do
|
144
144
|
let(:full_url) { "#{base_url}original.jpg" }
|
145
145
|
it "should build the correct url and return data" do
|
146
|
-
RestClient.should_receive(:get).with(full_url)
|
146
|
+
RestClient.should_receive(:get).with(full_url) { image_data }
|
147
147
|
expect(klass.send(meth, guid)).to eq(image_data)
|
148
148
|
end
|
149
149
|
end
|
@@ -153,8 +153,13 @@ describe Helix::Video do
|
|
153
153
|
let(:dim_val) { 100 }
|
154
154
|
let(:full_url) { "#{base_url}#{dim_val}#{url_tag}.jpg" }
|
155
155
|
let(:opts) { { dimension => dim_val } }
|
156
|
+
it "should clone the opts arg" do
|
157
|
+
RestClient.stub(:get).with(full_url) { image_data }
|
158
|
+
opts.should_receive(:clone) { opts }
|
159
|
+
klass.send(meth, guid, opts)
|
160
|
+
end
|
156
161
|
it "should build the correct url and return data" do
|
157
|
-
RestClient.should_receive(:get).with(full_url)
|
162
|
+
RestClient.should_receive(:get).with(full_url) { image_data }
|
158
163
|
expect(klass.send(meth, guid, opts)).to eq(image_data)
|
159
164
|
end
|
160
165
|
end
|
@@ -163,8 +168,13 @@ describe Helix::Video do
|
|
163
168
|
let(:dim_val) { 100 }
|
164
169
|
let(:full_url) { "#{base_url}#{dim_val}w#{dim_val}h.jpg" }
|
165
170
|
let(:opts) { { height: dim_val, width: dim_val } }
|
171
|
+
it "should clone the opts arg" do
|
172
|
+
RestClient.stub(:get).with(full_url) { image_data }
|
173
|
+
opts.should_receive(:clone) { opts }
|
174
|
+
klass.send(meth, guid, opts)
|
175
|
+
end
|
166
176
|
it "should build the correct url and return data" do
|
167
|
-
RestClient.should_receive(:get).with(full_url)
|
177
|
+
RestClient.should_receive(:get).with(full_url) { image_data }
|
168
178
|
expect(klass.send(meth, guid, opts)).to eq(image_data)
|
169
179
|
end
|
170
180
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: helix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 8
|
5
|
-
version: 0.0.2.
|
5
|
+
version: 0.0.2.7.pre
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Twistage, Inc
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2013-02-
|
13
|
+
date: 2013-02-21 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json
|
@@ -55,36 +55,36 @@ extra_rdoc_files: []
|
|
55
55
|
|
56
56
|
files:
|
57
57
|
- lib/helix.rb
|
58
|
-
- lib/helix/
|
58
|
+
- lib/helix/album.rb
|
59
|
+
- lib/helix/track.rb
|
60
|
+
- lib/helix/base.rb
|
61
|
+
- lib/helix/library.rb
|
59
62
|
- lib/helix/media.rb
|
63
|
+
- lib/helix/durationed_media.rb
|
64
|
+
- lib/helix/tag.rb
|
60
65
|
- lib/helix/statistics.rb
|
61
|
-
- lib/helix/
|
66
|
+
- lib/helix/video_playlist.rb
|
62
67
|
- lib/helix/audio_playlist.rb
|
63
|
-
- lib/helix/
|
68
|
+
- lib/helix/video.rb
|
64
69
|
- lib/helix/playlist.rb
|
65
|
-
- lib/helix/video_playlist.rb
|
66
70
|
- lib/helix/config.rb
|
67
|
-
- lib/helix/video.rb
|
68
|
-
- lib/helix/track.rb
|
69
|
-
- lib/helix/base.rb
|
70
|
-
- lib/helix/image.rb
|
71
|
-
- lib/helix/album.rb
|
72
71
|
- lib/helix/exceptions.rb
|
73
|
-
-
|
74
|
-
- spec/audio_playlist_spec.rb
|
75
|
-
- spec/config_spec.rb
|
76
|
-
- spec/image_spec.rb
|
77
|
-
- spec/media_spec.rb
|
72
|
+
- lib/helix/image.rb
|
78
73
|
- spec/durationed_media_spec.rb
|
79
|
-
- spec/
|
74
|
+
- spec/base_spec.rb
|
80
75
|
- spec/statistics_spec.rb
|
81
|
-
- spec/
|
82
|
-
- spec/video_playlist_spec.rb
|
76
|
+
- spec/config_spec.rb
|
83
77
|
- spec/track_spec.rb
|
84
|
-
- spec/video_spec.rb
|
85
78
|
- spec/playlist_spec.rb
|
79
|
+
- spec/image_spec.rb
|
86
80
|
- spec/library_spec.rb
|
87
|
-
- spec/
|
81
|
+
- spec/spec_helper.rb
|
82
|
+
- spec/audio_playlist_spec.rb
|
83
|
+
- spec/video_spec.rb
|
84
|
+
- spec/tag_spec.rb
|
85
|
+
- spec/album_spec.rb
|
86
|
+
- spec/video_playlist_spec.rb
|
87
|
+
- spec/media_spec.rb
|
88
88
|
- LICENSE
|
89
89
|
- README.md
|
90
90
|
homepage: https://github.com/Twistage/helix/
|
@@ -110,9 +110,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
110
|
requirements: []
|
111
111
|
|
112
112
|
rubyforge_project:
|
113
|
-
rubygems_version: 1.8.
|
113
|
+
rubygems_version: 1.8.24
|
114
114
|
signing_key:
|
115
115
|
specification_version: 3
|
116
116
|
summary: Wrapper library for the video API
|
117
117
|
test_files: []
|
118
118
|
|
119
|
+
has_rdoc: yard
|