summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2012-03-19 18:56:15 +0100
committerChristoph Helma <helma@in-silico.ch>2012-03-19 18:56:15 +0100
commit716c86b9529e6abd5d3e911d1da3a5168e0e5222 (patch)
tree5d520907cf33fd55fcb12343eb89213fd9b8c643
parenta3f677eca58b9a2876e1fcdd05ca5859194f80a2 (diff)
roo gem required, file-store skeleton added
-rw-r--r--lib/file-store.rb37
-rw-r--r--lib/opentox-server.rb2
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")