summaryrefslogtreecommitdiff
path: root/lib/file-store.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/file-store.rb')
-rw-r--r--lib/file-store.rb37
1 files changed, 37 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