media_monster_client 2.0.1 → 2.0.2

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/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ *.DS_Store
@@ -3,9 +3,11 @@ module MediaMonster
3
3
  class Job < Model
4
4
 
5
5
  attr_accessor :job_type # which type of job is this? audio to start, video, document, etc.
6
+ attr_accessor :priority # curently supports blank and 'high'
6
7
  attr_accessor :original # file location
7
8
  attr_accessor :call_back # url for webhook
8
9
  attr_accessor :tasks # array of tasks
10
+ attr_accessor :id
9
11
 
10
12
  def initialize(*args)
11
13
  super
@@ -36,6 +38,10 @@ module MediaMonster
36
38
  end
37
39
  @tasks << new_task
38
40
  end
41
+
42
+ def retry!
43
+ MediaMonsterClient.retry_job self
44
+ end
39
45
 
40
46
  end
41
47
 
@@ -1,3 +1,3 @@
1
1
  module MediaMonsterClient
2
- VERSION = "2.0.1"
2
+ VERSION = "2.0.2"
3
3
  end
@@ -25,19 +25,37 @@ module MediaMonsterClient
25
25
  def create_job(job=nil)
26
26
  job ||= MediaMonster::Job.new
27
27
  yield job
28
- post(create_url("jobs"), job.to_json, {'Accept'=>'application/json', 'Content-Type'=>'application/json'})
28
+ job.tap do |j|
29
+ j_str = post(create_url('jobs'), j.to_json, {'Accept'=>'application/json','Content-Type'=>'application/json'}).body
30
+ json = JSON.parse(j_str)
31
+ j.id = json['job']['id']
32
+ end
29
33
  end
30
34
 
31
35
  def update_task(task_id, task_status)
32
36
  json = {'task'=>{'status'=>task_status}}.to_json
33
37
  put(create_url("tasks/#{task_id.to_i}"), json, {'Accept'=>'application/json', 'Content-Type'=>'application/json'})
34
38
  end
39
+
40
+ def retry_job(job)
41
+ case job
42
+ when MediaMonster::Job then job
43
+ when Fixnum then MediaMonster::Job.new(:id => job)
44
+ when String then MediaMonster::Job.new(:id => job.to_i)
45
+ end.tap do |j|
46
+ post(retry_url(j), {}, {'Accept'=>'application/json'})
47
+ end
48
+ end
35
49
 
36
50
  protected
37
51
 
38
52
  def create_url(path)
39
53
  "/api/#{version}/#{path}"
40
54
  end
55
+
56
+ def retry_url(model)
57
+ "/api/#{version}/#{model.class.to_s.downcase.pluralize}/#{model.id}/retry"
58
+ end
41
59
 
42
60
  [:delete, :get, :head, :post, :put, :request].each do |method|
43
61
  define_method method do |*args|
@@ -12,13 +12,16 @@ Gem::Specification.new do |s|
12
12
  s.summary = %q{client gem for media monster app}
13
13
  s.description = %q{client gem for media monster app}
14
14
 
15
- s.rubyforge_project = "media_monster_client"
16
-
17
- s.add_dependency("activesupport")
18
- s.add_dependency("oauth")
19
-
20
15
  s.files = `git ls-files`.split("\n")
21
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
17
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
18
  s.require_paths = ["lib"]
19
+
20
+ s.add_runtime_dependency("activesupport")
21
+ s.add_runtime_dependency("oauth")
22
+
23
+ s.add_development_dependency "rake"
24
+ s.add_development_dependency "test-unit"
25
+ s.add_development_dependency 'fakeweb'
26
+
24
27
  end
@@ -4,6 +4,7 @@
4
4
  # gem 'activesupport', '=3.0.9'
5
5
 
6
6
  require 'helper'
7
+ require 'fakeweb'
7
8
 
8
9
  class TestMediaMonsterClient < Test::Unit::TestCase
9
10
 
@@ -13,49 +14,70 @@ class TestMediaMonsterClient < Test::Unit::TestCase
13
14
  MediaMonsterClient.host = "development.prx.org"
14
15
  MediaMonsterClient.port = 3000
15
16
  MediaMonsterClient.version = 'v1'
17
+
18
+ # FakeWeb.register_uri(:post, "http://development.prx.org:3000/api/v1/jobs", :body => MediaMonster::Job.new(:id=>123).to_json)
16
19
  end
17
20
 
18
- def test_create_job
21
+ def test_create_job_with_hash_original
19
22
  response = MediaMonsterClient.create_job do |job|
20
23
  job.job_type = 'audio'
21
- job.original = 's3://development.tcf.prx.org/public/uploads/entry_audio_files/2/test.mp2'
24
+ job.priority = 'high'
25
+ job.original = {:url=>'s3://development.tcf.prx.org/public/uploads/entry_audio_files/2/test.mp2', :format=>'mp2'}
22
26
  job.call_back = "http://development.prx.org:3001/audio_files/21/transcoded"
23
-
24
27
  job.add_task( 'transcode',
25
28
  {:format=>'mp3', :sample_rate=>'44100', :bit_rate=>'128'},
26
- 's3://development.tcf.prx.org/public/audio_files/21/test.mp3',
29
+ 's3://development.tcf.prx.org/public/audio_files/21/test_AK.mp3',
27
30
  nil,
28
31
  'download')
29
32
 
30
33
  end
31
-
32
34
  puts response.inspect
33
-
35
+
36
+ assert !response.id.blank?
34
37
  end
35
-
36
- def test_create_job_with_sequence
37
- response = MediaMonsterClient.create_job do |job|
38
- job.job_type = 'audio'
39
- job.original = 's3://development.tcf.prx.org/public/uploads/entry_audio_files/2/test.mp2'
40
- job.call_back = "http://development.prx.org:3001/audio_files/21/transcoded"
41
-
42
- job.add_sequence do |s|
43
- s.call_back = "http://development.prx.org:3001/audio_files/21/transcoded"
44
- s.label = 'preview'
45
-
46
- s.add_task( :task_type=>'cut',
47
- :options=>{:length=>4, :fade=>1},
48
- :label=>'cut it')
49
-
50
- s.add_task( :task_type=>'transcode',
51
- :options=>{:format=>'mp3', :sample_rate=>'44100', :bit_rate=>'64'},
52
- :label=>'mp3',
53
- :result=>'s3://development.tcf.prx.org/public/uploads/entry_audio_files/2/test_preview.mp3')
54
- end
55
-
56
- end
57
- puts response.inspect
58
- end
38
+
39
+ #
40
+ # def test_create_job
41
+ # response = MediaMonsterClient.create_job do |job|
42
+ # job.job_type = 'audio'
43
+ # job.original = 's3://development.tcf.prx.org/public/uploads/entry_audio_files/2/test.mp2'
44
+ # job.call_back = "http://development.prx.org:3001/audio_files/21/transcoded"
45
+ #
46
+ # job.add_task( 'transcode',
47
+ # {:format=>'mp3', :sample_rate=>'44100', :bit_rate=>'128'},
48
+ # 's3://development.tcf.prx.org/public/audio_files/21/test.mp3',
49
+ # nil,
50
+ # 'download')
51
+ #
52
+ # end
53
+ #
54
+ # puts response.inspect
55
+ #
56
+ # end
57
+ #
58
+ # def test_create_job_with_sequence
59
+ # response = MediaMonsterClient.create_job do |job|
60
+ # job.job_type = 'audio'
61
+ # job.original = 's3://development.tcf.prx.org/public/uploads/entry_audio_files/2/test.mp2'
62
+ # job.call_back = "http://development.prx.org:3001/audio_files/21/transcoded"
63
+ #
64
+ # job.add_sequence do |s|
65
+ # s.call_back = "http://development.prx.org:3001/audio_files/21/transcoded"
66
+ # s.label = 'preview'
67
+ #
68
+ # s.add_task( :task_type=>'cut',
69
+ # :options=>{:length=>4, :fade=>1},
70
+ # :label=>'cut it')
71
+ #
72
+ # s.add_task( :task_type=>'transcode',
73
+ # :options=>{:format=>'mp3', :sample_rate=>'44100', :bit_rate=>'64'},
74
+ # :label=>'mp3',
75
+ # :result=>'s3://development.tcf.prx.org/public/uploads/entry_audio_files/2/test_preview.mp3')
76
+ # end
77
+ #
78
+ # end
79
+ # puts response.inspect
80
+ # end
59
81
 
60
82
  # MediaMonsterClient.create_job do |job|
61
83
  # job.job_type = 'audio'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: media_monster_client
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
- - 1
10
- version: 2.0.1
9
+ - 2
10
+ version: 2.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrew Kuklewicz (kookster)
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-11 00:00:00 -04:00
18
+ date: 2012-01-17 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -46,6 +46,48 @@ dependencies:
46
46
  version: "0"
47
47
  type: :runtime
48
48
  version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: rake
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: test-unit
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :development
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: fakeweb
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: 3
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ type: :development
90
+ version_requirements: *id005
49
91
  description: client gem for media monster app
50
92
  email:
51
93
  - andrew@prx.org
@@ -98,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
140
  version: "0"
99
141
  requirements: []
100
142
 
101
- rubyforge_project: media_monster_client
143
+ rubyforge_project:
102
144
  rubygems_version: 1.4.2
103
145
  signing_key:
104
146
  specification_version: 3