]> git.r.bdr.sh - rbdr/grita/blobdiff - grita.rb
Fixes some versions that weren't found.
[rbdr/grita] / grita.rb
index 17ed55e8097a4563db073c587ea9e778164e26b9..180fe194dab08493c50658acfe1b67f6cd313859 100644 (file)
--- a/grita.rb
+++ b/grita.rb
@@ -1,7 +1,12 @@
 require 'sinatra'
 require 'haml'
 require 'less'
-require 'mongo'
+require 'dm-core'
+require 'dm-validations'
+require 'dm-timestamps'
+require 'dm-migrations'
+require 'rqr'
+require 'rdiscount'
 
 #config
 set :haml, :format => :html5
@@ -11,10 +16,55 @@ get '/' do
   haml :index
 end
 
+post '/' do
+  @grito = Grito.create(:title => params[:title], :text => params[:text])
+  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://#{request.host}/'+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
-  "Estos no son los droides que estás buscando."
+get '/:grito' do
+    @grito = Grito.first(:id => params[:grito].to_i(36))
+    raise "Invalid Post" if @grito.nil?
+    
+    @markdown = RDiscount.new(@grito.text)
+    
+    haml :grito, :layout => :layoutmini
+end
+
+error do
+  haml :error
+end
+
+DataMapper.setup(:default, ENV['DATABASE_URL'] || 'mysql://root:root@localhost/grita')
+class Grito
+  include DataMapper::Resource
+  property :id,           Serial
+  property :title,        String
+  property :text,         Text
+  property :created_at,   DateTime
+  
+  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