diff --git a/ruby/lib/jam_ruby/resque/audiomixer.rb b/ruby/lib/jam_ruby/resque/audiomixer.rb index 850c9f9a7..8bb0f5aa3 100644 --- a/ruby/lib/jam_ruby/resque/audiomixer.rb +++ b/ruby/lib/jam_ruby/resque/audiomixer.rb @@ -7,24 +7,49 @@ module JamRuby class AudioMixer + @@log = Logging.logger[AudioMixer] + def self.perform(manifest) audiomixer = AudioMixer.new audiomixer.run(manifest) end + def initialize + + end + + def validate + raise "no files specified" if !@manifest[:files] || @manifest[:files].length == 0 + end + + def fetch_audio_files + @manifest[:files].each do |file| + filename = file[:filename] + end + end + def run(manifest) - manifest_file = Dir::Tmpname.make_tmpname "/var/tmp/audiomixer/manifest-#{manifest['recordingId']}", nil + + @manifest = manifest.symbolize_keys + + validate + + fetch_audio_files + + manifest_file = Dir::Tmpname.make_tmpname "/var/tmp/audiomixer/manifest-#{@manifest['recordingId']}", nil File.open(manifest_file,"w") do |f| - f.write(manifest.to_json) + f.write(@manifest.to_json) end #{"files": [{"codec": "vorbis", "offset": 0, "filename": "TPD - bass.flac-stereo.ogg"}, {"codec": "vorbis", "offset": 0, "filename": "TPD - bg vox.flac-stereo.ogg"}, {"codec": "vorbis", "offset": 0, "filename": "TPD - drums.flac-stereo.ogg"}, {"codec": "vorbis", "offset": 0, "filename": "TPD - guitars.flac-stereo.ogg"}, {"codec": "vorbis", "offset": 0, "filename": "TPD - lead vox.flac-stereo.ogg"}], "output": {"codec": "vorbis", "filename": "mix.ogg"}, "timeline": [{"timestamp": 0, "mix": [{"balance": 0, "level": 100}, {"balance": 0, "level": 100}, {"balance": 0, "level": 100}, {"balance": 0, "level": 100}, {"balance": 0, "level": 100}]}]} - path = "/var/lib/audiomixer/audiomixer/audiomixerapp" - system("tar zxvf some_big_tarball.tar.gz") + audiomixer_cmd = "#{APP_CONFIG.audiomixer_path} #{manifest_file}" + @@log.debug("executing #{audiomixer_cmd}") + + system(audiomixer_cmd) end end diff --git a/ruby/spec/jam_ruby/resque/audiomixer_spec.rb b/ruby/spec/jam_ruby/resque/audiomixer_spec.rb new file mode 100644 index 000000000..f01519dbe --- /dev/null +++ b/ruby/spec/jam_ruby/resque/audiomixer_spec.rb @@ -0,0 +1,18 @@ +require 'spec_helper' + +# these tests avoid the use of ActiveRecord and FactoryGirl to do blackbox, non test-instrumented tests +describe AudioMixer do + + let(:audiomixer) { AudioMixer.new } + + describe "validate" do + it "no files specified" do + expect{ audiomixer.run({}) }.to raise_error("no files specified") + end + + it "no codec specified" do + expect{ audiomixer.run({ "files" => [ "offset" => 0, "filename" => "/some/path"] }) } + end + end + +end diff --git a/websocket-gateway/Gemfile b/websocket-gateway/Gemfile index 301837131..0d8737bf8 100644 --- a/websocket-gateway/Gemfile +++ b/websocket-gateway/Gemfile @@ -37,6 +37,7 @@ gem 'aws-sdk', '1.29.1' gem 'bugsnag' gem 'geokit-rails' gem 'postgres_ext' +gem 'resque' group :development do gem 'pry'