diff options
author | Christoph Helma <helma@in-silico.ch> | 2012-03-19 18:56:15 +0100 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2012-03-19 18:56:15 +0100 |
commit | 716c86b9529e6abd5d3e911d1da3a5168e0e5222 (patch) | |
tree | 5d520907cf33fd55fcb12343eb89213fd9b8c643 | |
parent | a3f677eca58b9a2876e1fcdd05ca5859194f80a2 (diff) |
roo gem required, file-store skeleton added
-rw-r--r-- | lib/file-store.rb | 37 | ||||
-rw-r--r-- | lib/opentox-server.rb | 2 |
2 files changed, 39 insertions, 0 deletions
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") |