url-shortener/app.rb

32 lines
744 B
Ruby

require 'roda'
require 'securerandom'
require 'json'
require 'sequel'
class App < Roda
DB = Sequel.sqlite('db/url_shortener.db')
links = DB[:links]
plugin :render, escape: true
route do |r|
r.root do
view :home
end
r.get String do | url_code |
link = links.filter(:code => url_code).first[:url]
r.redirect link
end
r.post "create" do
url = r.params['url']
if url.empty? then r.redirect '/' end
if nil == links.filter(:url => url).first
code = SecureRandom.urlsafe_base64 4
links.insert(url: url, code: code)
end
@new_link = 'http://' + request.env['HTTP_HOST'] + '/' + links.filter(:url => url).first[:code]
view :create
end
end
end