added flash plugin

+ added flash plugin, and the session plugin required by flash
+ set the DB name as an environment variable
+ set @message variable where it needs to be set to show on the UI
pull/11/head
Adam Townsend 2023-10-03 15:56:42 -07:00
parent fff6b0f5dd
commit b2b41f1aa1
1 changed files with 13 additions and 3 deletions

16
app.rb
View File

@ -4,11 +4,16 @@ require 'json'
require 'sequel' require 'sequel'
class App < Roda class App < Roda
DB = Sequel.sqlite('db/url_shortener.db') plugin :sessions, secret: ENV.delete('APP_SESSION_SECRET')
links = DB[:links]
plugin :render, escape: true plugin :render, escape: true
plugin :flash
DB = Sequel.sqlite("db/#{ENV['DB_NAME']}")
links = DB[:links]
route do |r| route do |r|
r.root do r.root do
@message = flash['message'] || "Enter a URL"
view :home view :home
end end
@ -19,11 +24,16 @@ class App < Roda
r.post "create" do r.post "create" do
url = r.params['url'] url = r.params['url']
if url.empty? then r.redirect '/' end if url.empty?
flash['message'] = "Please enter a valid URL";
r.redirect '/'
end
if nil == links.filter(:url => url).first if nil == links.filter(:url => url).first
code = SecureRandom.urlsafe_base64 4 code = SecureRandom.urlsafe_base64 4
links.insert(url: url, code: code) links.insert(url: url, code: code)
@message = "Link created"
end end
@message ||= "Link exists"
@new_link = 'http://' + request.env['HTTP_HOST'] + '/' + links.filter(:url => url).first[:code] @new_link = 'http://' + request.env['HTTP_HOST'] + '/' + links.filter(:url => url).first[:code]
view :create view :create
end end