-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgroundhog_app.rb
59 lines (49 loc) · 1.47 KB
/
groundhog_app.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
require 'sinatra'
require_relative 'models/init'
enable :sessions
get '/' do
erb :index
end
post '/upload' do
file_source = params["video"][:tempfile].path
filetype = return_filetype(params["video"][:type])
filename = strip_filetype(params["video"][:filename])
session[:filename] = filename
session[:type] = filetype
unless ["mp4"].include?(filetype)
status 406
erb :error_406
else
video_storage_path = "public/temp_video/#{filename}.#{filetype}"
VideoConverter.copy_to_temp_video(video_storage_path, file_source)
@video_storage_link = "temp_video/#{filename}.#{filetype}"
erb :preview
end
end
post '/convert' do
filename = session[:filename]
filetype = session[:type]
video_storage_path = "public/temp_video/#{filename}.#{filetype}"
gif_storage_path = "public/temp_gif/#{filename}.gif"
gif_start_point = params["start-time"].to_i
gif_duration = params["end-time"].to_i - gif_start_point
VideoConverter.convert_to_gif(gif_storage_path, video_storage_path, gif_start_point, gif_duration)
@gif_path = "temp_gif/#{filename}.gif"
@gif_title = "#{filename}.gif"
erb :download
end
delete '/destroy' do
filename = session[:filename]
filetype = session[:type]
File.delete("public/temp_video/#{filename}.#{filetype}")
File.delete("public/temp_gif/#{filename}.gif")
session.clear
"complete"
end
private
def strip_filetype(path)
path.gsub(/\.[a-z\d]{3,4}$/, "")
end
def return_filetype(path)
path[/(?<=\/)[a-z\d]{3,4}$/]
end