-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.rb
68 lines (57 loc) · 1.49 KB
/
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
60
61
62
63
64
65
66
67
68
require 'sinatra/base'
require 'rack-flash'
class App < Sinatra::Application
enable :sessions
use Rack::Flash
helpers do
def h(text)
Rack::Utils.escape_html(text)
end
end
get '/' do
session[:app_name] = '' unless session[:app_name]
session[:app_url] = '' unless session[:app_url]
erb :index, :locals => {:error_message => flash[:error_message], :app_name => session[:app_name], :app_url => session[:app_url]}
end
post '/create' do
session[:app_name] = app_name = h(params[:app_name])
session[:app_url] = app_url = h(params[:app_url])
if !validate_app_name(app_name)
redirect '/'
elsif !validate_url(app_url)
redirect '/'
else
if AppRepository.create?(app_name, app_url)
redirect '/view_apps'
else
flash[:error_message] = 'App has already been submitted'
redirect '/'
end
end
end
get '/view_apps' do
db = DB[:apps]
erb :view_apps, :locals => {:db => db}
end
def validate_url(url)
if url =~ /^(?:https?:\/\/)?(?:www.)?(\w+)\.([a-zA-Z]{2,6})(\/\w*)*\/?$/
true
elsif url.strip.empty?
true
else
flash[:error_message] = 'Please enter a valid URL'
false
end
end
def validate_app_name(app_name)
if app_name.strip.empty?
flash[:error_message] = 'You must enter a name'
false
elsif app_name.length > 15
flash[:error_message] = 'App name must be less than 15 characters'
false
else
true
end
end
end