require 'roda' require 'securerandom' require 'json' require 'sequel' require 'logger' 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'] code = SecureRandom.urlsafe_base64 4 links.insert(url: url, code: code) @new_link = 'http://' + request.env['HTTP_HOST'] + '/' + links.filter(:url => url).first[:code] view :create end end end