enigmamachine 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -43,7 +43,7 @@ Then check it out in your browser, at http://localhost:2002. This web interface
43
43
  exists so that you can configure your enigmamachine easily, and check its status.
44
44
 
45
45
  Most of the time, though, your enigmamachine will be accessed not through a
46
- browser, but by another program. Let's say you want your website to be able to
46
+ browser, but by your program's code. Let's say you want your website to be able to
47
47
  enocode video. You write the code for the video upload, so your web app can
48
48
  receive the video. When the upload is complete, make an HTTP call something like this in your code:
49
49
 
@@ -67,41 +67,46 @@ called "HTTP_AUTHORIZATION".
67
67
 
68
68
  Programmatic requests in Ruby might look something like this:
69
69
 
70
+ # enigma_client.rb:
71
+
70
72
  require 'rubygems'
71
- require 'httparty'
72
73
  require 'base64'
74
+ require 'net/http'
75
+ require 'uri'
73
76
 
74
77
  class EnigmaClient
75
78
 
76
- include HTTParty
77
- base_uri 'localhost:2002'
78
-
79
79
  def initialize (u, p)
80
- @auth = encode_credentials(u, p)
80
+ @username, @password = u, p
81
81
  end
82
82
 
83
83
  def post(path_to_video, encoder_id)
84
- self.class.post('/videos', {
85
- :body => {:video => {:file => path_to_video}, :encoder_id => encoder_id},
86
- 'HTTP_AUTHORIZATION' => @auth
87
- })
88
- end
89
-
90
- private
91
-
92
- def encode_credentials(username, password)
93
- "Basic " + Base64.encode64("#{username}:#{password}")
84
+ request = {:body => {
85
+ :video => {:file => path_to_video},
86
+ :encoder_id => encoder_id
87
+ }}
88
+ Net::HTTP.post_form(
89
+ URI.parse("http://#{@username}:#{@password}@localhost:2002/videos"),
90
+ request)
94
91
  end
95
92
 
96
93
  end
97
94
 
98
-
99
-
100
95
  # Let's use it!
101
96
  #
97
+ irb
98
+ require 'enigma_client'
102
99
  EnigmaClient.new("admin", "admin").post("/path/to/your/uploaded/video.mp4", 1)
103
100
 
104
101
 
102
+ A simpler, wget-based approach might look like this:
103
+
104
+ wget http://admin:admin@localhost:2002/videos --post-data 'video[file]=/path/to/your/video.mp4&encoder_id=1'
105
+
106
+ <b>Don't use wget like this on a shared host, it's insecure</b> (read the wget
107
+ docs for more on this). This wget example is just to show you what's going on
108
+ when using a simple tool that most programmers know how to use.
109
+
105
110
  == Encoders and Encoding Tasks
106
111
 
107
112
  When you POST the location of a video to your enigmamachine, you need to tell
@@ -120,12 +125,12 @@ thumbnails", and save it.
120
125
  So, now there's an encoder, but it won't do anything. Let's add some tasks,
121
126
  by clicking on the "new task" link.
122
127
 
123
- Give the first task a name, like _Encode a 320x240 flv at 25 frames per second_.
128
+ Give the first task a name, like <i>Encode a 320x240 flv at 25 frames per second</i>.
124
129
 
125
130
  The output file suffix in this case will be *.flv*.
126
131
 
127
132
  The encoding command you'll want to use would be
128
- _-ab 128 -ar 22050 -b 500000 -r 25 -s 320x240_. This cryptic command string
133
+ <i>-ab 128 -ar 22050 -b 500000 -r 25 -s 320x240</i>. This cryptic command string
129
134
  tells ffmpeg to encode a Flash video at 320x240 pixels, with an audio bitrate
130
135
  of 128kbps, an audio sample rate of 22.050khz, and a frame rate of 25fps. You
131
136
  can find out what all the ffmpeg command line switches do by RTFMing at
@@ -134,7 +139,7 @@ http://www.ffmpeg.org/ffmpeg-doc.html
134
139
  You would go on to define a couple more encoding tasks for your encoder.
135
140
  Grabbing a screen frame in ffmpeg can be done with the following command-line
136
141
  switches, which you can put into a task called, let's say,
137
- _Grab a 320x240 JPEG thumbnail_:
142
+ <i>Grab a 320x240 JPEG thumbnail</i>:
138
143
 
139
144
  -ss 00:00:05 -t 00:00:01 -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240
140
145
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{enigmamachine}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["dave"]
12
- s.date = %q{2010-07-10}
12
+ s.date = %q{2010-07-12}
13
13
  s.default_executable = %q{enigmamachine}
14
14
  s.description = %q{A RESTful video encoder which you can use as either a front-end to ffmpeg or headless on a server.}
15
15
  s.email = %q{dave@caprica}
@@ -76,22 +76,22 @@ Gem::Specification.new do |s|
76
76
  s.homepage = %q{http://github.com/futurechimp/enigmamachine}
77
77
  s.rdoc_options = ["--charset=UTF-8"]
78
78
  s.require_paths = ["lib"]
79
- s.rubygems_version = %q{1.3.6}
79
+ s.rubygems_version = %q{1.3.7}
80
80
  s.summary = %q{A RESTful video encoder.}
81
81
  s.test_files = [
82
82
  "test/support/blueprints.rb",
83
- "test/helper.rb",
84
83
  "test/test_encoding_queue.rb",
85
- "test/test_video.rb",
84
+ "test/helper.rb",
86
85
  "test/test_encoder.rb",
87
- "test/test_enigmamachine.rb"
86
+ "test/test_enigmamachine.rb",
87
+ "test/test_video.rb"
88
88
  ]
89
89
 
90
90
  if s.respond_to? :specification_version then
91
91
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
92
92
  s.specification_version = 3
93
93
 
94
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
94
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
95
95
  s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
96
96
  s.add_runtime_dependency(%q<data_mapper>, ["= 1.0.0"])
97
97
  s.add_runtime_dependency(%q<eventmachine>, ["= 0.12.10"])
@@ -1,20 +1,21 @@
1
1
  <div class="post">
2
- <h1 class="title">Edit resource</h1>
3
- <div class="entry">
4
- <% unless @encoder.errors.empty? %>
5
- <div class="errors">
6
- <h2>Errors on Encoder</h2>
7
- <ul>
8
- <% @encoder.errors.each do |error| %>
9
- <li><%= error %></li>
10
- <% end %>
11
- </ul>
12
- </div>
13
- <% end %>
14
-
15
- <form action="/encoders/<%= @encoder.id%>" method="POST">
16
- <input name="_method" value="PUT" type="hidden"/>
17
- <%= partial :"encoders/form" %>
18
- </form>
19
- </div>
20
-
2
+ <h1 class="title">Edit resource</h1>
3
+ <div class="entry">
4
+ <% unless @encoder.errors.empty? %>
5
+ <div class="errors">
6
+ <h2>Errors on Encoder</h2>
7
+ <ul>
8
+ <% @encoder.errors.each do |error| %>
9
+ <li><%= error %></li>
10
+ <% end %>
11
+ </ul>
12
+ </div>
13
+ <% end %>
14
+
15
+ <form action="/encoders/<%= @encoder.id%>" method="POST">
16
+ <input name="_method" value="PUT" type="hidden"/>
17
+ <%= partial :"encoders/form" %>
18
+ </form>
19
+ </div>
20
+ </div>
21
+
@@ -1,10 +1,10 @@
1
1
  <li>
2
- <%= encoders_encoder.name %> -
3
- <a href="/encoders/<%= encoders_encoder.id %>">show</a>
4
- <a href="/encoders/<%= encoders_encoder.id %>/edit">edit</a>
5
- <form action="/encoders/<%= encoders_encoder.id %>" method="POST">
6
- <input name="_method" value="DELETE" type="hidden"/>
7
- <input type="submit" value="Delete"/>
8
- </form>
2
+ <%= encoders_encoder.name %> -
3
+ <a href="/encoders/<%= encoders_encoder.id %>">show</a>
4
+ <a href="/encoders/<%= encoders_encoder.id %>/edit">edit</a>
5
+ <form action="/encoders/<%= encoders_encoder.id %>" method="POST">
6
+ <input name="_method" value="DELETE" type="hidden"/>
7
+ <input type="submit" value="Delete"/>
8
+ </form>
9
9
  </li>
10
10
 
@@ -1,10 +1,10 @@
1
1
  <% task = encoders_encoding_task %>
2
2
  <div id="task<%= task.id %>">
3
- <strong><%= task.name %>:</strong> ffmpeg <%= task.command %> :: <i><%= task.output_file_suffix %></i> suffix :: <a href="/encoding_tasks/<%= task.id%>/edit">edit</a>
3
+ <strong><%= task.name %>:</strong> ffmpeg <%= task.command %> :: <i><%= task.output_file_suffix %></i> suffix :: <a href="/encoding_tasks/<%= task.id%>/edit">edit</a>
4
4
 
5
- <form action="/encoding_tasks/<%= task.id %>" method="POST">
6
- <input name="_method" value="DELETE" type="hidden"/>
7
- <input type="submit" value="Delete"/>
8
- </form>
5
+ <form action="/encoding_tasks/<%= task.id %>" method="POST">
6
+ <input name="_method" value="DELETE" type="hidden"/>
7
+ <input type="submit" value="Delete"/>
8
+ </form>
9
9
  </div>
10
10
 
@@ -1,5 +1,11 @@
1
- <p><strong>Name:</strong>
2
- <input name="encoder[name]" id="encoder_name" value="<%= @encoder.name %>" size="50"></input></p>
1
+ <p>
2
+ <strong>Name:</strong>
3
+ <input name="encoder[name]" id="encoder_name" value="<%= @encoder.name %>" size="50"></input>
4
+ </p>
5
+
3
6
  <input type="submit" value="Save"/>
4
- <p><a href="/encoders">cancel</a></p>
7
+
8
+ <p>
9
+ <a href="/encoders">cancel</a>
10
+ </p>
5
11
 
@@ -1,12 +1,14 @@
1
1
  <div class="post">
2
2
  <h1 class="title">Available encoders</h1>
3
3
  <div class="entry">
4
- <% unless @encoders.empty? %>
5
- <ul>
6
- <%= partial :'encoders/encoder', :collection => @encoders %>
7
- </ul>
8
- <% end %>
9
- <p><a href="/encoders/new">New encoder</a></p>
4
+ <% unless @encoders.empty? %>
5
+ <ul>
6
+ <%= partial :'encoders/encoder', :collection => @encoders %>
7
+ </ul>
8
+ <% end %>
9
+ <p>
10
+ <a href="/encoders/new">New encoder</a>
11
+ </p>
10
12
  </div>
11
- </div>
12
-
13
+ </div>
14
+
@@ -1,19 +1,23 @@
1
1
  <div class="post">
2
- <h1 class="title">Create a new encoder</h1>
3
- <div class="entry">
4
- <% unless @encoder.errors.empty? %>
5
- <div class="errors">
6
- <h2>Errors on Encoder</h2>
7
- <ul>
8
- <% @encoder.errors.each do |error| %>
9
- <li><%= error %></li>
10
- <% end %>
11
- </ul>
12
- </div>
13
- <% end %>
14
-
15
- <form action="/encoders" method="POST">
16
- <%= partial :"encoders/form" %>
17
- </form>
18
- </div>
19
-
2
+ <h1 class="title">Create a new encoder</h1>
3
+ <div class="entry">
4
+
5
+ <% unless @encoder.errors.empty? %>
6
+ <div class="errors">
7
+ <h2>Errors on Encoder</h2>
8
+ <ul>
9
+ <% @encoder.errors.each do |error| %>
10
+ <li>
11
+ <%= error %>
12
+ </li>
13
+ <% end %>
14
+ </ul>
15
+ </div>
16
+ <% end %>
17
+
18
+ <form action="/encoders" method="POST">
19
+ <%= partial :"encoders/form" %>
20
+ </form>
21
+ </div>
22
+ </div>
23
+
@@ -1,19 +1,22 @@
1
1
  <div class="post">
2
- <h1 class="title">Encoder: <%= @encoder.name %></h1>
3
- <div class="entry">
4
-
5
-
6
-
7
- <p>Encoding tasks that this encoder performs:</p>
8
- <% if @encoder.encoding_tasks.empty? %>
9
- None.
10
- <% end %>
11
- <%= partial(:"encoders/encoding_task", :collection => @encoder.encoding_tasks) %>
12
-
13
- <p>Add a <a href="/encoding_tasks/new/<%= @encoder.id%>">new</a> task to this encoder.</p>
14
-
15
- <p><a href="/encoders">Back</a> to the list of available encoders.</p>
16
-
17
- </div>
18
- </div>
19
-
2
+ <h1 class="title">Encoder: <%= @encoder.name %></h1>
3
+ <div class="entry">
4
+ <p>
5
+ Encoding tasks that this encoder performs:
6
+ </p>
7
+ <% if @encoder.encoding_tasks.empty? %>
8
+ None.
9
+ <% end %>
10
+ <%= partial(:"encoders/encoding_task", :collection => @encoder.encoding_tasks) %>
11
+
12
+ <p>
13
+ Add a <a href="/encoding_tasks/new/<%= @encoder.id%>">new</a> task to
14
+ this encoder.
15
+ </p>
16
+
17
+ <p>
18
+ <a href="/encoders">Back</a> to the list of available encoders.
19
+ </p>
20
+ </div>
21
+ </div>
22
+
@@ -1,25 +1,25 @@
1
1
  <div class="post">
2
- <h1 class="title">Edit an encoding task</h1>
3
- <div class="entry">
2
+ <h1 class="title">Edit an encoding task</h1>
3
+ <div class="entry">
4
4
 
5
- <% unless @encoding_task.errors.empty? %>
6
- <div class="errors">
7
- <h2>Errors on Encoding Task</h2>
8
- <ul>
9
- <% @encoding_task.errors.each do |error| %>
10
- <li><%= error %></li>
5
+ <% unless @encoding_task.errors.empty? %>
6
+ <div class="errors">
7
+ <h2>Errors on Encoding Task</h2>
8
+ <ul>
9
+ <% @encoding_task.errors.each do |error| %>
10
+ <li><%= error %></li>
11
+ <% end %>
12
+ </ul>
13
+ </div>
11
14
  <% end %>
12
- </ul>
13
- </div>
14
- <% end %>
15
15
 
16
- <form id="task-<%= @encoding_task.id%>-edit"
17
- action="/encoding_tasks/<%= @encoding_task.id %>"
18
- method="POST">
19
- <input name="_method" value="PUT" type="hidden"></input>
20
- <%= partial(:'encoding_tasks/form') %>
21
- </form>
16
+ <form id="task-<%= @encoding_task.id%>-edit"
17
+ action="/encoding_tasks/<%= @encoding_task.id %>"
18
+ method="POST">
19
+ <input name="_method" value="PUT" type="hidden"></input>
20
+ <%= partial(:'encoding_tasks/form') %>
21
+ </form>
22
22
 
23
- </div>
23
+ </div>
24
24
  </div>
25
25
 
@@ -1,12 +1,26 @@
1
- <p><strong>Name:</strong> e.g. <em>encode a 320x240 flv at 25 frames per second</em><br/>
2
- <input name="encoding_task[name]" id="encoding_task_name" value="<%= @encoding_task.name %>" ></input></p>
1
+ <p>
2
+ Note: you can read about your options in the
3
+ <a href="http://www.ffmpeg.org/ffmpeg-doc.html">ffmpeg documentation</a>
4
+ </p>
5
+ <p>
6
+ <strong>Name:</strong> e.g. <em>encode a 320x240 flv at 25 frames per second</em>
7
+ <br/>
8
+ <input name="encoding_task[name]" id="encoding_task_name" value="<%= @encoding_task.name %>" ></input>
9
+ </p>
3
10
 
4
- <p><strong>Output file suffix:</strong> e.g. <em>.flv</em><br/>
5
- <input name="encoding_task[output_file_suffix]" id="encoding_task_output_file_suffix" value="<%= @encoding_task.output_file_suffix %>" ></input></p>
11
+ <p>
12
+ <strong>Output file suffix:</strong> e.g. <em>.flv</em>
13
+ <br/>
14
+ <input name="encoding_task[output_file_suffix]" id="encoding_task_output_file_suffix" value="<%= @encoding_task.output_file_suffix %>" ></input>
15
+ </p>
6
16
 
7
- <p><strong>Encoding command:</strong> e.g. <em>-ab 128 -ar 22050 -b 500000 -r 25 -s 320x240<br/>
8
- <input name="encoding_task[command]" id="encoding_task_command" value="<%= @encoding_task.command %>" size="70"></input></p>
17
+ <p>
18
+ <strong>Encoding command:</strong> e.g. <em>-ab 128 -ar 22050 -b 500000 -r 25 -s 320x240<br/>
19
+ <input name="encoding_task[command]" id="encoding_task_command" value="<%= @encoding_task.command %>" size="70"></input>
20
+ </p>
9
21
 
10
22
  <input type="submit" value="Save"/>
11
- <p><a href="/encoders/<%= @encoding_task.encoder.id %>">cancel</a></p>
23
+ <p>
24
+ <a href="/encoders/<%= @encoding_task.encoder.id %>">cancel</a>
25
+ </p>
12
26
 
@@ -1,23 +1,23 @@
1
1
  <div class="post">
2
- <h1 class="title">New encoding task</h1>
3
- <div class="entry">
4
-
5
-
6
- <% unless @encoding_task.errors.empty? %>
7
- <div class="errors">
8
- <h2>Errors on Encoding Task</h2>
9
- <ul>
10
- <% @encoding_task.errors.each do |error| %>
11
- <li><%= error %></li>
12
- <% end %>
13
- </ul>
14
- </div>
15
- <% end %>
16
-
17
- <p>Create a new encoding task for this encoder</p>
18
- <form action="/encoding_tasks/<%= @encoding_task.encoder.id %>" method="POST">
19
- <%= partial(:"encoding_tasks/form")%>
20
- </form>
21
-
22
- </div>
23
- </div>
2
+ <h1 class="title">New encoding task</h1>
3
+ <div class="entry">
4
+
5
+ <% unless @encoding_task.errors.empty? %>
6
+ <div class="errors">
7
+ <h2>Errors on Encoding Task</h2>
8
+ <ul>
9
+ <% @encoding_task.errors.each do |error| %>
10
+ <li><%= error %></li>
11
+ <% end %>
12
+ </ul>
13
+ </div>
14
+ <% end %>
15
+
16
+ <p>Create a new encoding task for this encoder</p>
17
+ <form action="/encoding_tasks/<%= @encoding_task.encoder.id %>" method="POST">
18
+ <%= partial(:"encoding_tasks/form")%>
19
+ </form>
20
+
21
+ </div>
22
+ </div>
23
+
@@ -1,11 +1,15 @@
1
-
2
- <p><strong>File location:</strong><br/>
3
- <input name="video[file]" id="video_file" value="<%= @video.file %>" size="50"></input></p>
1
+ <p>
2
+ <strong>File location:</strong>
3
+ <br/>
4
+ <input name="video[file]" id="video_file" value="<%= @video.file %>" size="50"></input>
5
+ </p>
4
6
  <select id="encoder_id" name="encoder_id">
5
7
  <% @encoders.each do |e| %>
6
8
  <option value="<%= e.id %>"><%= e.name %></option>
7
9
  <% end %>
8
10
  </select>
9
11
  <input type="submit" value="Save"/>
10
- <p><a href="/videos">cancel</a></p>
12
+ <p>
13
+ <a href="/videos">cancel</a>
14
+ </p>
11
15
 
@@ -1,36 +1,39 @@
1
1
  <div class="post">
2
- <h1 class="title">Videos</h1>
3
- <div class="entry">
4
-
5
- <p><a href="/videos/new">New video</a></p>
6
-
7
- <% unless @encoding_videos.empty? %>
8
- <h2>Currently encoding</h2>
9
- <ul>
10
- <%= partial :"videos/video", :collection => @encoding_videos %>
11
- </ul>
12
- <% end %>
13
-
14
- <% unless @unencoded_videos.empty? %>
15
- <h2>Waiting to encode</h2>
16
- <ul>
17
- <%= partial :"videos/video", :collection => @unencoded_videos %>
18
- </ul>
19
- <% end %>
20
-
21
- <% unless @completed_videos.empty? %>
22
- <h2>Completed</h2>
23
- <ul>
24
- <%= partial :"videos/video", :collection => @completed_videos %>
25
- </ul>
26
- <% end %>
27
-
28
- <% unless @videos_with_errors.empty? %>
29
- <h2>Failed to encode</h2>
30
- <ul>
31
- <%= partial :"videos/video", :collection => @videos_with_errors %>
32
- </ul>
33
- <% end %>
34
-
35
- </div>
36
-
2
+ <h1 class="title">Videos</h1>
3
+ <div class="entry">
4
+
5
+ <p>
6
+ <a href="/videos/new">New video</a>
7
+ </p>
8
+
9
+ <% unless @encoding_videos.empty? %>
10
+ <h2>Currently encoding</h2>
11
+ <ul>
12
+ <%= partial :"videos/video", :collection => @encoding_videos %>
13
+ </ul>
14
+ <% end %>
15
+
16
+ <% unless @unencoded_videos.empty? %>
17
+ <h2>Waiting to encode</h2>
18
+ <ul>
19
+ <%= partial :"videos/video", :collection => @unencoded_videos %>
20
+ </ul>
21
+ <% end %>
22
+
23
+ <% unless @completed_videos.empty? %>
24
+ <h2>Completed</h2>
25
+ <ul>
26
+ <%= partial :"videos/video", :collection => @completed_videos %>
27
+ </ul>
28
+ <% end %>
29
+
30
+ <% unless @videos_with_errors.empty? %>
31
+ <h2>Failed to encode</h2>
32
+ <ul>
33
+ <%= partial :"videos/video", :collection => @videos_with_errors %>
34
+ </ul>
35
+ <% end %>
36
+
37
+ </div>
38
+ </div>
39
+
@@ -1,19 +1,22 @@
1
1
  <div class="post">
2
- <h1 class="title">Create a new video</h1>
3
- <div class="entry">
4
- <% unless @video.errors.empty? %>
5
- <div class="errors">
6
- <h2>Errors on video</h2>
7
- <ul>
8
- <% @video.errors.each do |error| %>
9
- <li><%= error %></li>
10
- <% end %>
11
- </ul>
12
- </div>
13
- <% end %>
14
-
15
- <form action="/videos" method="POST">
16
- <%= partial :"videos/form" %>
17
- </form>
18
- </div>
19
-
2
+ <h1 class="title">Create a new video</h1>
3
+ <div class="entry">
4
+ <% unless @video.errors.empty? %>
5
+ <div class="errors">
6
+ <h2>Errors on video</h2>
7
+ <ul>
8
+ <% @video.errors.each do |error| %>
9
+ <li>
10
+ <%= error %>
11
+ </li>
12
+ <% end %>
13
+ </ul>
14
+ </div>
15
+ <% end %>
16
+
17
+ <form action="/videos" method="POST">
18
+ <%= partial :"videos/form" %>
19
+ </form>
20
+ </div>
21
+ </div>
22
+
data/lib/enigmamachine.rb CHANGED
@@ -90,7 +90,6 @@ class EnigmaMachine < Sinatra::Base
90
90
  # main Sinatra/thin thread once the periodic timer is added.
91
91
  #
92
92
  configure do
93
-
94
93
  Video.reset_encoding_videos
95
94
  Thread.new do
96
95
  until EM.reactor_running?
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enigmamachine
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 17
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 3
8
- - 0
9
- version: 0.3.0
9
+ - 1
10
+ version: 0.3.1
10
11
  platform: ruby
11
12
  authors:
12
13
  - dave
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-07-10 00:00:00 +01:00
18
+ date: 2010-07-12 00:00:00 +01:00
18
19
  default_executable: enigmamachine
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: thoughtbot-shoulda
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
@@ -33,9 +36,11 @@ dependencies:
33
36
  name: data_mapper
34
37
  prerelease: false
35
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
36
40
  requirements:
37
41
  - - "="
38
42
  - !ruby/object:Gem::Version
43
+ hash: 23
39
44
  segments:
40
45
  - 1
41
46
  - 0
@@ -47,9 +52,11 @@ dependencies:
47
52
  name: eventmachine
48
53
  prerelease: false
49
54
  requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
50
56
  requirements:
51
57
  - - "="
52
58
  - !ruby/object:Gem::Version
59
+ hash: 59
53
60
  segments:
54
61
  - 0
55
62
  - 12
@@ -61,9 +68,11 @@ dependencies:
61
68
  name: dm-sqlite-adapter
62
69
  prerelease: false
63
70
  requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
64
72
  requirements:
65
73
  - - "="
66
74
  - !ruby/object:Gem::Version
75
+ hash: 23
67
76
  segments:
68
77
  - 1
69
78
  - 0
@@ -75,9 +84,11 @@ dependencies:
75
84
  name: rack-flash
76
85
  prerelease: false
77
86
  requirement: &id005 !ruby/object:Gem::Requirement
87
+ none: false
78
88
  requirements:
79
89
  - - ">="
80
90
  - !ruby/object:Gem::Version
91
+ hash: 3
81
92
  segments:
82
93
  - 0
83
94
  version: "0"
@@ -87,9 +98,11 @@ dependencies:
87
98
  name: ruby-debug
88
99
  prerelease: false
89
100
  requirement: &id006 !ruby/object:Gem::Requirement
101
+ none: false
90
102
  requirements:
91
103
  - - ">="
92
104
  - !ruby/object:Gem::Version
105
+ hash: 3
93
106
  segments:
94
107
  - 0
95
108
  version: "0"
@@ -99,9 +112,11 @@ dependencies:
99
112
  name: sinatra
100
113
  prerelease: false
101
114
  requirement: &id007 !ruby/object:Gem::Requirement
115
+ none: false
102
116
  requirements:
103
117
  - - "="
104
118
  - !ruby/object:Gem::Version
119
+ hash: 23
105
120
  segments:
106
121
  - 1
107
122
  - 0
@@ -113,9 +128,11 @@ dependencies:
113
128
  name: thin
114
129
  prerelease: false
115
130
  requirement: &id008 !ruby/object:Gem::Requirement
131
+ none: false
116
132
  requirements:
117
133
  - - ">="
118
134
  - !ruby/object:Gem::Version
135
+ hash: 3
119
136
  segments:
120
137
  - 0
121
138
  version: "0"
@@ -194,30 +211,34 @@ rdoc_options:
194
211
  require_paths:
195
212
  - lib
196
213
  required_ruby_version: !ruby/object:Gem::Requirement
214
+ none: false
197
215
  requirements:
198
216
  - - ">="
199
217
  - !ruby/object:Gem::Version
218
+ hash: 3
200
219
  segments:
201
220
  - 0
202
221
  version: "0"
203
222
  required_rubygems_version: !ruby/object:Gem::Requirement
223
+ none: false
204
224
  requirements:
205
225
  - - ">="
206
226
  - !ruby/object:Gem::Version
227
+ hash: 3
207
228
  segments:
208
229
  - 0
209
230
  version: "0"
210
231
  requirements: []
211
232
 
212
233
  rubyforge_project:
213
- rubygems_version: 1.3.6
234
+ rubygems_version: 1.3.7
214
235
  signing_key:
215
236
  specification_version: 3
216
237
  summary: A RESTful video encoder.
217
238
  test_files:
218
239
  - test/support/blueprints.rb
219
- - test/helper.rb
220
240
  - test/test_encoding_queue.rb
221
- - test/test_video.rb
241
+ - test/helper.rb
222
242
  - test/test_encoder.rb
223
243
  - test/test_enigmamachine.rb
244
+ - test/test_video.rb