sinatra-videoman 0.0.1a → 0.0.1
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.
- checksums.yaml +8 -8
- data/lib/sinatra/videoman/middleware.rb +59 -81
- data/lib/sinatra/videoman/models/video.rb +0 -3
- data/lib/sinatra/videoman/version.rb +1 -1
- data/lib/sinatra/videoman/views/edit.erb +0 -6
- data/lib/sinatra/videoman/views/index.erb +1 -0
- data/lib/sinatra/videoman/views/show.erb +10 -0
- data/lib/sinatra/videoman/views/upload.erb +21 -22
- data/lib/sinatra/videoman.rb +16 -15
- data/sinatra-videoman.gemspec +0 -2
- metadata +6 -40
- data/lib/sinatra/videoman/locales/bg.yml +0 -14
- data/lib/sinatra/videoman/locales/en.yml +0 -14
- data/lib/sinatra/videoman/rake.rb +0 -23
- data/lib/sinatra/videoman/tasks.rake +0 -8
- data/lib/sinatra/videoman/views/list.erb +0 -1
- data/lib/sinatra/videoman/views/video.erb +0 -10
- data/lib/sinatra/videoman/views/video_link.erb +0 -6
- data/lib/sinatra/videoman/views/watch.erb +0 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDY4Mjk4NjI4MDM3MjFiNGI2NzAzMWI2M2JjMTQ2NzIzZGIwYWRiNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MGM3ZDdkNzI0NDI5ZGI2ZDY1NWEwYWFmYzI1ZDJlYjg4OWMzYmRlNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODRmYjViN2Q0ZTg4YzY2ZmU0ZGQxMWFkYzk3MzQ2MzVhZWQ4NGYwNDY0Nzhm
|
10
|
+
NjI0NmNlNWZiMmFhMDMyYjU2YWFiYjJlNGYwYTJhODNjMDE5NGFkMjkxNGM0
|
11
|
+
NWM0NjAxOTRiMDZmYTg1N2U0MmQxN2VmMjkxY2QwYjczOGJmMmI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzNlZGQ2NzZmOGU1ZmNjMTE5MzkxZDdjNzMxZDE2OTg2YTdmOTE0OTM5YmZj
|
14
|
+
NzEzZDAzZTM4ZjZhNGI5NjZmN2JiYzM5N2RiYTdhYzVjNDcwNGNlOThjNTdi
|
15
|
+
Njg0ZGRlZTA5ODExOThlMTQyM2Q4NzFjMWM4NThjMmRjNDI5MDc=
|
@@ -1,100 +1,78 @@
|
|
1
1
|
module Sinatra
|
2
2
|
module Videoman
|
3
|
-
|
3
|
+
class Middleware < Sinatra::Base
|
4
4
|
include Manager
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
I18n.enforce_available_locales = true
|
10
|
-
I18n.default_locale = Manager.config[:default_locale]
|
11
|
-
|
12
|
-
def self.registered(app)
|
13
|
-
app.register Sinatra::Partial
|
14
|
-
app.set :partial_template_engine, :erb
|
15
|
-
|
16
|
-
app.get '/videos/upload/?' do
|
17
|
-
erb 'videos/upload'.to_sym
|
18
|
-
end
|
6
|
+
get '/videos/upload/?' do
|
7
|
+
erb :upload
|
8
|
+
end
|
19
9
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
else
|
29
|
-
Manager.call :after_file_upload_failure, [request, response]
|
30
|
-
flash[:error] = file.errors.messages
|
31
|
-
redirect '/videos/upload'
|
32
|
-
end
|
33
|
-
end
|
34
|
-
if video.valid? && video.video_files.size >= 1
|
35
|
-
video.save!
|
36
|
-
Manager.call :after_video_save, [video, request, response]
|
37
|
-
flash[:notice] = I18n.t 'video_uploaded'
|
38
|
-
redirect Manager.config[:after_video_save_path]
|
10
|
+
post '/videos/upload' do
|
11
|
+
video = Video.new(params[:video])
|
12
|
+
params[:video_files].each do |file|
|
13
|
+
file = VideoFile.new(:file => file, :content_type => file[:type])
|
14
|
+
if file.valid?
|
15
|
+
video.video_files << file
|
16
|
+
file.save!
|
17
|
+
Manager.call :after_file_upload, [file]
|
39
18
|
else
|
40
|
-
Manager.call :
|
41
|
-
flash[:error] =
|
19
|
+
Manager.call :after_file_upload_failure, [request, response]
|
20
|
+
flash[:error] = file.errors.messages
|
42
21
|
redirect '/videos/upload'
|
43
22
|
end
|
44
23
|
end
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
24
|
+
if video.valid? && video.video_files.size >= 1
|
25
|
+
video.save!
|
26
|
+
Manager.call :after_video_save, [video, request, response]
|
27
|
+
flash[:notice] = Manager.config[:after_video_save_msg]
|
28
|
+
redirect Manager.config[:after_video_save_path]
|
29
|
+
else
|
30
|
+
Manager.call :after_video_save_failure, [request, response]
|
31
|
+
flash[:error] = video.errors.messages
|
32
|
+
redirect '/videos/upload'
|
53
33
|
end
|
34
|
+
end
|
54
35
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
else
|
60
|
-
I18n.t 'video_not_found'
|
61
|
-
end
|
62
|
-
end
|
36
|
+
get '/videos/show/:id/?' do
|
37
|
+
@video = Video.find(params[:id])
|
38
|
+
erb :show
|
39
|
+
end
|
63
40
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
Manager.call :after_video_update, [video, request, response]
|
69
|
-
flash[:notice] = I18n.t 'video_edited'
|
70
|
-
redirect Manager.config[:after_video_update_path]
|
71
|
-
else
|
72
|
-
Manager.call :after_video_update_failure, [video, request, response]
|
73
|
-
flash[:error] = video.errors.messages
|
74
|
-
redirect "/videos/edit/#{video.id}"
|
75
|
-
end
|
76
|
-
end
|
41
|
+
get '/videos/edit/:id/?' do
|
42
|
+
@video = Video.find(params[:id])
|
43
|
+
erb :edit
|
44
|
+
end
|
77
45
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
91
|
-
redirect Manager.config[:after_video_delete_path]
|
46
|
+
post '/videos/edit/:id' do
|
47
|
+
video = Video.find(params[:id])
|
48
|
+
video.update_atributes(params)
|
49
|
+
if video.valid?
|
50
|
+
video.save
|
51
|
+
Manager.call :after_update, [video, request, response]
|
52
|
+
flash[:notice] = Manager.config[:after_update_msg]
|
53
|
+
redirect Manager.config[:after_update_path]
|
54
|
+
else
|
55
|
+
Manager.call :after_update_failure, [video, request, response]
|
56
|
+
flash[:error] = video.errors.messages
|
57
|
+
redirect Manager.config[:after_update_failure_path]
|
92
58
|
end
|
59
|
+
end
|
93
60
|
|
94
|
-
|
95
|
-
|
96
|
-
|
61
|
+
post '/videos/delete/:id' do
|
62
|
+
video = Video.find(params[:id])
|
63
|
+
Manager.call :before_delete, [video, request, response]
|
64
|
+
if video
|
65
|
+
video.video.remove!
|
66
|
+
video.delete
|
67
|
+
Manager.call :after_delete, [request, response]
|
68
|
+
flash[:notice] = Manager.config[:after_delete_msg]
|
97
69
|
end
|
70
|
+
redirect Manager.config[:after_delete_path]
|
71
|
+
end
|
72
|
+
|
73
|
+
get '/videos/' do
|
74
|
+
@videos = Video.all
|
75
|
+
erb :index
|
98
76
|
end
|
99
77
|
end
|
100
78
|
end
|
@@ -1,6 +0,0 @@
|
|
1
|
-
<form method="post" action="/videos/edit/<%= @video.id %>">
|
2
|
-
<p><%= I18n.t 'title' %>: <input type="text" value=<%= @video.title %> name="title" /></p>
|
3
|
-
<p><%= I18n.t 'description' %>: <input type="text" value=<%= @video.description %> name="description" /></p>
|
4
|
-
<p><%= I18n.t 'thumbnail' %>: <input type="file" value=<%= @video.thumbnail.url%> name="thumbnail" /></p>
|
5
|
-
<input type="submit" value=<%= I18n.t 'submit' %> />
|
6
|
-
</form>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= partial :show, :collection => @videos %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<h3><%= @video.title %></h3>
|
2
|
+
<video width="320" height="240" controls>
|
3
|
+
<% @video.video_files.each do |source| %>
|
4
|
+
<source src=<%= source.file.url %> type=<%= source.content_type %> />
|
5
|
+
<% end %>
|
6
|
+
Your browser does not support the video tag.
|
7
|
+
</video>
|
8
|
+
<div id="description">
|
9
|
+
<%= @video.description %>
|
10
|
+
</div>
|
@@ -1,37 +1,36 @@
|
|
1
1
|
<script type='text/javascript'>
|
2
2
|
function addFields(){
|
3
|
-
|
3
|
+
// Container <div> where dynamic content will be placed
|
4
|
+
var container = document.getElementById("video_input_fields");
|
5
|
+
// Append a node with a random text
|
4
6
|
container.appendChild(document.createTextNode("Video: "));
|
7
|
+
// Create an <input> element, set its type and name attributes
|
5
8
|
var input = document.createElement("input");
|
6
9
|
input.type = "file";
|
7
10
|
input.name = "video_files[]";
|
8
11
|
container.appendChild(input);
|
12
|
+
// Append a line break
|
9
13
|
container.appendChild(document.createElement("br"));
|
10
14
|
}
|
11
15
|
</script>
|
12
16
|
<%= flash[:error] %>
|
13
17
|
<%= flash[:notice] %>
|
14
18
|
<form id="video_form" enctype="multipart/form-data" method="post" action="/videos/upload">
|
15
|
-
<fieldset id="
|
16
|
-
<legend
|
17
|
-
|
19
|
+
<fieldset id="video_input_fields">
|
20
|
+
<legend>Video files</legend>
|
21
|
+
<label for="file">Video:</label>
|
22
|
+
<input id="file" type="file" name="video_files[]" required /></br>
|
18
23
|
</fieldset>
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
</tr>
|
32
|
-
<tr>
|
33
|
-
<td><input type="submit" value=<%= I18n.t 'upload' %> /></td>
|
34
|
-
<td><input type="button" value=<%= I18n.t 'add_field' %> onclick="addFields()" /></td>
|
35
|
-
</tr>
|
36
|
-
</table>
|
24
|
+
|
25
|
+
<label for="title">Title:</label>
|
26
|
+
<input id="title" type="text" name="video[title]" placeholder="Video title" required /><br />
|
27
|
+
|
28
|
+
<label for="description">Description:</label>
|
29
|
+
<input id="description" type="text" name="video[description]" placeholder="Video description" required /><br />
|
30
|
+
|
31
|
+
<label for="thumbnail">Thumbnail:</label>
|
32
|
+
<input id="thumbnail" type="file" name="video[thumbnail]" required /><br />
|
33
|
+
|
34
|
+
<input type="submit" value="Upload" />
|
35
|
+
<input type="button" value="Add file" onclick="addFields()" />
|
37
36
|
</form>
|
data/lib/sinatra/videoman.rb
CHANGED
@@ -1,18 +1,14 @@
|
|
1
1
|
require "sinatra/videoman/version"
|
2
|
-
require "
|
2
|
+
require "rack-flash"
|
3
3
|
require "bcrypt"
|
4
4
|
require "sinatra/base"
|
5
5
|
require "active_record"
|
6
6
|
require "carrierwave"
|
7
|
-
require "i18n"
|
8
|
-
require "i18n/backend/fallbacks"
|
9
7
|
|
10
8
|
module Sinatra
|
11
9
|
module Videoman
|
12
10
|
module Manager
|
13
11
|
@@config = {
|
14
|
-
:default_locale => :en,
|
15
|
-
|
16
12
|
:video_upload_dir => nil,
|
17
13
|
:video_file_extensions => %w(ogv webm mp4),
|
18
14
|
:max_video_file_size => 400,
|
@@ -22,8 +18,13 @@ module Sinatra
|
|
22
18
|
:max_thumb_file_size => 2,
|
23
19
|
|
24
20
|
:after_video_save_path => '/',
|
25
|
-
:
|
26
|
-
|
21
|
+
:after_video_save_msg => 'Successfully uploaded video!',
|
22
|
+
|
23
|
+
:after_update_path => '/',
|
24
|
+
:after_update_msg => 'Successfully updated video!',
|
25
|
+
|
26
|
+
:after_delete_path => '/',
|
27
|
+
:after_delete_msg => 'Successfully deleted video!',
|
27
28
|
}
|
28
29
|
@@callbacks = {}
|
29
30
|
|
@@ -69,20 +70,20 @@ module Sinatra
|
|
69
70
|
self.register :after_video_save_failure, &block
|
70
71
|
end
|
71
72
|
|
72
|
-
def self.
|
73
|
-
self.register :
|
73
|
+
def self.after_update &block
|
74
|
+
self.register :after_update, &block
|
74
75
|
end
|
75
76
|
|
76
|
-
def self.
|
77
|
-
self.register :
|
77
|
+
def self.after_update_failure &block
|
78
|
+
self.register :after_update_failure, &block
|
78
79
|
end
|
79
80
|
|
80
|
-
def self.
|
81
|
-
self.register :
|
81
|
+
def self.before_delete &block
|
82
|
+
self.register :after_delete, &block
|
82
83
|
end
|
83
84
|
|
84
|
-
def self.
|
85
|
-
self.register :
|
85
|
+
def self.after_delete &block
|
86
|
+
self.register :after_delete, &block
|
86
87
|
end
|
87
88
|
end
|
88
89
|
end
|
data/sinatra-videoman.gemspec
CHANGED
@@ -22,10 +22,8 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
|
24
24
|
spec.add_runtime_dependency "sinatra"
|
25
|
-
spec.add_runtime_dependency "sinatra-partial"
|
26
25
|
spec.add_runtime_dependency "activerecord"
|
27
26
|
spec.add_runtime_dependency "protected_attributes"
|
28
27
|
spec.add_runtime_dependency "bcrypt-ruby"
|
29
28
|
spec.add_runtime_dependency "carrierwave"
|
30
|
-
spec.add_runtime_dependency "i18n"
|
31
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-videoman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dobromir Ivanov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: sinatra-partial
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ! '>='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: activerecord
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,20 +108,6 @@ dependencies:
|
|
122
108
|
- - ! '>='
|
123
109
|
- !ruby/object:Gem::Version
|
124
110
|
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: i18n
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ! '>='
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :runtime
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ! '>='
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
111
|
description: Sinatra video manager
|
140
112
|
email:
|
141
113
|
- dobromir0ivanov@gmail.com
|
@@ -149,22 +121,16 @@ files:
|
|
149
121
|
- README.md
|
150
122
|
- Rakefile
|
151
123
|
- lib/sinatra/videoman.rb
|
152
|
-
- lib/sinatra/videoman/locales/bg.yml
|
153
|
-
- lib/sinatra/videoman/locales/en.yml
|
154
124
|
- lib/sinatra/videoman/middleware.rb
|
155
125
|
- lib/sinatra/videoman/models/video.rb
|
156
126
|
- lib/sinatra/videoman/models/video_file.rb
|
157
|
-
- lib/sinatra/videoman/rake.rb
|
158
|
-
- lib/sinatra/videoman/tasks.rake
|
159
127
|
- lib/sinatra/videoman/thumb_uploader.rb
|
160
128
|
- lib/sinatra/videoman/version.rb
|
161
129
|
- lib/sinatra/videoman/video_uploader.rb
|
162
130
|
- lib/sinatra/videoman/views/edit.erb
|
163
|
-
- lib/sinatra/videoman/views/
|
131
|
+
- lib/sinatra/videoman/views/index.erb
|
132
|
+
- lib/sinatra/videoman/views/show.erb
|
164
133
|
- lib/sinatra/videoman/views/upload.erb
|
165
|
-
- lib/sinatra/videoman/views/video.erb
|
166
|
-
- lib/sinatra/videoman/views/video_link.erb
|
167
|
-
- lib/sinatra/videoman/views/watch.erb
|
168
134
|
- sinatra-videoman.gemspec
|
169
135
|
homepage: ''
|
170
136
|
licenses:
|
@@ -181,9 +147,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
181
147
|
version: '0'
|
182
148
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
149
|
requirements:
|
184
|
-
- - ! '
|
150
|
+
- - ! '>='
|
185
151
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
152
|
+
version: '0'
|
187
153
|
requirements: []
|
188
154
|
rubyforge_project:
|
189
155
|
rubygems_version: 2.1.11
|
@@ -1,14 +0,0 @@
|
|
1
|
-
en:
|
2
|
-
title: Заглавие
|
3
|
-
description: Описание
|
4
|
-
thumbnail: Миниатюра
|
5
|
-
submit: Изпращане
|
6
|
-
upload: Качване
|
7
|
-
video_files: Видео Файлове
|
8
|
-
video: Видео
|
9
|
-
add_field: Добавяна на полета
|
10
|
-
video_tag_unsupported: Браузърът ви не поддържа HTML5 видеа.
|
11
|
-
vide_not_found: Видеото не беше намерено!
|
12
|
-
video_deleted: Видеото изтрито успешно!
|
13
|
-
video_uploaded: Видеото качено успешно!
|
14
|
-
video_edited: Видеото обновено успешно!
|
@@ -1,14 +0,0 @@
|
|
1
|
-
en:
|
2
|
-
title: Title
|
3
|
-
description: Description
|
4
|
-
thumbnail: Thumbnail
|
5
|
-
submit: Submit
|
6
|
-
upload: Upload
|
7
|
-
video_files: Video Files
|
8
|
-
video: Video
|
9
|
-
add_field: Add Fields
|
10
|
-
video_tag_unsupported: Your browser does not support video tags.
|
11
|
-
vide_not_found: Could not find the video you are looking for!
|
12
|
-
video_deleted: Successfully deleted video!
|
13
|
-
video_updated: Successfully uploaded video!
|
14
|
-
video_edited: Successfully edited video!
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
|
3
|
-
module Sinatra
|
4
|
-
module Videoman
|
5
|
-
module Tasks
|
6
|
-
def self.install_views_task views_dir
|
7
|
-
current_path = File.expand_path(File.dirname(__FILE__))
|
8
|
-
Dir.foreach(current_path + '/views') do |item|
|
9
|
-
next if item == '.' or item == '..'
|
10
|
-
File.open(File.join(current_path, 'views', item), 'r') do |file|
|
11
|
-
File.open(File.join(views_dir, item), 'w') do |view|
|
12
|
-
while line = file.gets
|
13
|
-
view.write line
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
load 'sinatra/videoman/tasks.rake'
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= partial 'videos/video_link'.to_sym, :collection => @video_links%>
|
@@ -1,10 +0,0 @@
|
|
1
|
-
<h3><%= video.title %></h3>
|
2
|
-
<video width="640" height="360" controls>
|
3
|
-
<% video.video_files.each do |source| %>
|
4
|
-
<source src=<%= source.file.url %> type=<%= source.content_type %> />
|
5
|
-
<% end %>
|
6
|
-
<%= I18n.t 'video_tag_not_supported' %>
|
7
|
-
</video>
|
8
|
-
<div id="description">
|
9
|
-
<%= video.description %>
|
10
|
-
</div>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= partial 'videos/video'.to_sym, :locals => {:video => @video} %>
|