diff options
Diffstat (limited to 'grita.rb')
| -rw-r--r-- | grita.rb | 38 |
1 files changed, 33 insertions, 5 deletions
@@ -2,7 +2,10 @@ require 'sinatra' require 'haml' require 'less' require 'dm-core' +require 'dm-validations' require 'dm-timestamps' +require 'dm-migrations' +require 'rqr' #config set :haml, :format => :html5 @@ -13,15 +16,37 @@ get '/' do end post '/' do - @grito = Grito.first_or_create(:title => params[:title], :text => params[:text]) + @grito = Grito.new(:title => params[:title], :text => params[:text]) + @grito.save haml :index end +get '/qr/:grito.png' do + tmpfile = Tempfile.new('tmp') + tmpfile.close + rpr_filepath = tmpfile.path + '.png' + + RQR::QRCode.create do |qr| + qr.save('http://grita.heroku.com/'+params[:grito], rpr_filepath) + end + + buffer = File.open(rpr_filepath).read + + content_type 'image/png' + buffer +end + get '/style.css' do less :style end -not_found do +get '/:grito' do + @grito = Grito.first(:id => params[:grito].to_i(36)) + raise "Invalid Post" if @grito.nil? + haml :grito +end + +error do haml :error end @@ -29,11 +54,14 @@ DataMapper.setup(:default, ENV['DATABASE_URL'] || 'mysql://root:root@localhost/g class Grito include DataMapper::Resource property :id, Serial - property :title, String, :required => true - property :text, Text, :required => true + property :title, String + property :text, Text property :created_at, DateTime - def geturl() + validates_presence_of :title, :message => "· Debes incluír un título." + validates_presence_of :text, :message => "· ¡No escribiste contenido!" + + def gethash() self.id.to_s(36) end end
\ No newline at end of file |