summaryrefslogtreecommitdiff
path: root/application.rb
diff options
context:
space:
mode:
Diffstat (limited to 'application.rb')
-rw-r--r--application.rb41
1 files changed, 33 insertions, 8 deletions
diff --git a/application.rb b/application.rb
index 7d3de38..0507ad8 100644
--- a/application.rb
+++ b/application.rb
@@ -4,6 +4,8 @@ require 'opentox-ruby'
set :lock, true
+@@datadir = "data"
+
class PredictionCache < Ohm::Model
attribute :compound_uri
attribute :model_uri
@@ -22,8 +24,24 @@ before do
@id = @id.to_s.sub(/\//,'').to_i
@uri = uri @id
- @yaml_file = "public/#{@id}.yaml"
- raise OpenTox::NotFoundError.new "Model #{@id} not found." unless File.exists? @yaml_file
+ @json_file = "#{@@datadir}/#{@id}.json"
+ raise OpenTox::NotFoundError.new "Model #{@id} not found." unless File.exists? @json_file
+
+ extension = File.extname(request.path_info)
+ unless extension.empty?
+ case extension
+ when ".html"
+ @accept = 'text/html'
+ when ".yaml"
+ @accept = 'application/x-yaml'
+ when ".json"
+ @accept = 'application/json'
+ when ".rdfxml"
+ @accept = 'application/rdf+xml'
+ else
+ raise OpenTox::NotFoundError.new "File format #{extension} not supported."
+ end
+ end
end
# make sure subjectid is not included in params, subjectid is set as member variable
@@ -35,7 +53,7 @@ require 'lazar.rb'
helpers do
def next_id
- id = Dir["./public/*yaml"].collect{|f| File.basename(f.sub(/.yaml/,'')).to_i}.sort.last
+ id = Dir["./#{@@datadir}/*json"].collect{|f| File.basename(f.sub(/.json/,'')).to_i}.sort.last
id = 0 if id.nil?
id + 1
end
@@ -58,15 +76,22 @@ helpers do
end
get '/?' do # get index of models
- response['Content-Type'] = 'text/uri-list'
- Dir["./public/*yaml"].collect{|f| File.basename(f.sub(/.yaml/,'')).to_i}.sort.collect{|n| uri n}.join("\n") + "\n"
+ uri_list = Dir["./#{@@datadir}/*json"].collect{|f| File.basename(f.sub(/.json/,'')).to_i}.sort.collect{|n| uri n}.join("\n") + "\n"
+ case @accept
+ when /html/
+ response['Content-Type'] = 'text/html'
+ OpenTox.text_to_html uri_list
+ else
+ response['Content-Type'] = 'text/uri-list'
+ uri_list
+ end
end
delete '/:id/?' do
LOGGER.debug "Deleting model with id "+@id.to_s
begin
- FileUtils.rm @yaml_file
- if @subjectid and !File.exists? @yaml_file and @uri
+ FileUtils.rm @json_file
+ if @subjectid and !File.exists? @json_file and @uri
begin
res = OpenTox::Authorization.delete_policies_from_uri(@uri, @subjectid)
LOGGER.debug "Policy deleted for Model URI: #{@uri} with result: #{res}"
@@ -84,7 +109,7 @@ end
delete '/?' do
# TODO delete datasets
- FileUtils.rm Dir["public/*.yaml"]
+ FileUtils.rm Dir["#{@@datadir}/*.json"]
PredictionCache.all.each {|cache| cache.delete }
response['Content-Type'] = 'text/plain'
"All models and cached predictions deleted."