Created
October 31, 2011 22:08
-
-
Save xaviervia/1329184 to your computer and use it in GitHub Desktop.
Piano Rest - Revisiting (major refactor)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$LOAD_PATH << File.expand_path( "lib" ) | |
require "piano/fast" | |
require "piano/rest" | |
disable :etags | |
enable :sessions | |
post "/" do | |
resource :index | |
save_data params | |
flash "Saved some data" | |
redirect back, params.to_json | |
end | |
put %r{^/(.*?):(.+?)$} do |resource_text, item_text| | |
resource resource_text | |
params["id"] = item_text | |
params.delete "captures" | |
save_data params | |
flash "Updated #{item_text}" | |
status 201 | |
headers \ | |
"Location" => "/#{resource}:#{item_text}" | |
body params.to_json | |
end | |
delete %r{^/(.*?):(.+?)$} do |resource_text, item_text| | |
resource_text = "index" if resource_text.nil? | |
resource resource_text | |
delete_data item_text | |
flash "Deleted #{item_text}" | |
status 201 | |
headers \ | |
"Location" => "/#{resource}" | |
end | |
get %r{^/(.*?):(.+?)$} do |resource_text, item| | |
resource_text = "index" if resource_text.nil? | |
resource resource_text | |
@content = from.yaml "data/#{resource}/#{item}.yaml" | |
try_haml resource.to.symbol | |
end | |
get %r{^/(.+?).js$} do |resource_text| | |
content_type resource.media_type.to.symbol | |
coffee resource.to.symbol | |
end | |
get %r{^/(.+?).css$} do |resource_text| | |
content_type resource.media_type.to.symbol | |
sass resource.to.symbol | |
end | |
get %r{^/(.+?)$} do |resource_text| | |
try_haml resource.to.symbol | |
end | |
get "/" do | |
try_haml resource.to.symbol | |
end | |
before %r{^/(.*?)(\.\w+)?$} do |resource_name, media_type| | |
resource_name = "index" if resource_name == "" | |
resource resource_name | |
resource.media_type = media_type[1..-1] if media_type | |
end | |
helpers do | |
def save_data data | |
dir! "data/#{resource}" | |
file.append "data/#{resource}/" + link( data[:id] ) + ".yaml", data.to_yaml | |
end | |
def delete_data data | |
file.delete "data/#{resource}/#{data}.yaml" | |
end | |
def items | |
return [] unless dir? "data/#{resource}" | |
dir "data/#{resource}", | |
:extension => :yaml, | |
:strip_extension => true | |
end | |
def resource symbol = nil | |
return session[:resource] unless symbol | |
session[:resource] = Piano::Rest::Resource.new symbol | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment