From 716c86b9529e6abd5d3e911d1da3a5168e0e5222 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Mon, 19 Mar 2012 18:56:15 +0100 Subject: roo gem required, file-store skeleton added --- lib/file-store.rb | 37 +++++++++++++++++++++++++++++++++++++ lib/opentox-server.rb | 2 ++ 2 files changed, 39 insertions(+) create mode 100644 lib/file-store.rb diff --git a/lib/file-store.rb b/lib/file-store.rb new file mode 100644 index 0000000..181d019 --- /dev/null +++ b/lib/file-store.rb @@ -0,0 +1,37 @@ +FileUtils.mkdir_p File.join(File.dirname(__FILE__),"private") + +module OpenTox + + # Base class for OpenTox services + class FileStore < Service + + helpers do + def next_id + id = Dir["./private/*.nt"].collect{|f| File.basename(f,"nt").to_i}.sort.last + id = 0 if id.nil? + id + 1 + end + + def file id + File.join File.dirname(File.expand_path __FILE__), "private", "#{id.to_s}.nt" + end + + def uri_list + Dir["./private/*.nt"].collect{|f| url_for File.basename(f,".nt")}.join("\n") + end + end + + get '/?' do + uri_list + end + + post '/?' do + File.open(file(next_id),"w+"){|f| f.puts request.env["rack.input"].read} + end + + get '/:id/?' do + send_file file(params[:id]) + end + end + +end diff --git a/lib/opentox-server.rb b/lib/opentox-server.rb index c8aae1b..608627b 100644 --- a/lib/opentox-server.rb +++ b/lib/opentox-server.rb @@ -3,5 +3,7 @@ require 'rack' require 'rack/contrib' require 'sinatra' require 'sinatra/url_for' +require 'roo' require File.join(File.dirname(__FILE__),"environment.rb") require File.join(File.dirname(__FILE__),"opentox.rb") +require File.join(File.dirname(__FILE__),"file-store.rb") -- cgit v1.2.3