diff options
-rw-r--r-- | application.rb | 23 | ||||
-rw-r--r-- | lazar.rb | 7 |
2 files changed, 26 insertions, 4 deletions
diff --git a/application.rb b/application.rb index 195dcaf..0f762eb 100644 --- a/application.rb +++ b/application.rb @@ -7,8 +7,17 @@ class Model property :id, Serial property :uri, String, :length => 255 property :owl, Text, :length => 2**32-1 - property :yaml, Text, :length => 2**32-1 + property :yaml, Text, :length => 2**32-1 + property :token_id, String, :length => 255 property :created_at, DateTime + + after :save, :check_policy + + private + def check_policy + OpenTox::Authorization.check_policy(uri, token_id) + end + end class Prediction @@ -46,8 +55,18 @@ end delete '/:id/?' do begin - Model.get(params[:id]).destroy! + model = Model.get(params[:id]) + uri = model.uri + model.destroy! "Model #{params[:id]} deleted." + if params[:token_id] and !Model.get(params[:id]) and uri + begin + aa = OpenTox::Authorization.delete_policy_from_uri(uri, params[:token_id]) + LOGGER.debug "Policy deleted for Model URI: #{uri} with token_id: #{params[:token_id]} with result: #{aa}" + rescue + LOGGER.warn "Policy delete error for Model URI: #{uri}" + end + end rescue halt 404, "Model #{params[:id]} does not exist." end @@ -288,8 +288,10 @@ end post '/?' do # create model halt 400, "MIME type \"#{request.content_type}\" not supported." unless request.content_type.match(/yaml/) - model = Lazar.new + model = Lazar.new model.save + model.token_id = params[:token_id] if params[:token_id] + model.token_id = request.env["HTTP_TOKEN_ID"] if !model.token_id and request.env["HTTP_TOKEN_ID"] model.uri = url_for("/#{model.id}", :full) model.yaml = request.env["rack.input"].read model.save @@ -304,6 +306,8 @@ post '/:id/?' do # create prediction @prediction = OpenTox::Dataset.new @prediction.creator = lazar.uri + @prediction.token_id = params[:token_id] + @prediction.token_id = request.env["HTTP_TOKEN_ID"] if !@prediction.token_id and request.env["HTTP_TOKEN_ID"] dependent_variable = YAML.load(lazar.yaml).dependentVariables @prediction.title = URI.decode(dependent_variable.split(/#/).last) case dependent_variable @@ -335,7 +339,6 @@ post '/:id/?' do # create prediction else halt 400, "MIME type \"#{request.env['HTTP_ACCEPT']}\" not supported." end - elsif dataset_uri response['Content-Type'] = 'text/uri-list' task_uri = OpenTox::Task.as_task do |