diff options
-rw-r--r-- | application.rb | 23 | ||||
-rw-r--r-- | lazar.rb | 30 |
2 files changed, 42 insertions, 11 deletions
diff --git a/application.rb b/application.rb index 99e4619..4fc749d 100644 --- a/application.rb +++ b/application.rb @@ -52,27 +52,30 @@ end get '/?' do # get index of models response['Content-Type'] = 'text/uri-list' + params.delete_if{|k,v| k=="subjectid"} ModelStore.all(params).collect{|m| m.uri}.join("\n") + "\n" end delete '/:id/?' do - begin - uri = ModelStore.get(params[:id]).uri - ModelStore.get(params[:id]).destroy! - "Model #{params[:id]} deleted." - if params[:subjectid] and !ModelStore.get(params[:id]) and uri + begin + uri = ModelStore.get(params[:id]).uri + ModelStore.get(params[:id]).destroy! + "Model #{params[:id]} deleted." + subjectid = params[:subjectid] if params[:subjectid] + subjectid = request.env['HTTP_SUBJECTID'] if !subjectid and request.env['HTTP_SUBJECTID'] + if subjectid and !ModelStore.get(params[:id]) and uri begin - aa = OpenTox::Authorization.delete_policies_from_uri(uri, params[:subjectid]) - LOGGER.debug "Policy deleted for Model URI: #{uri} with subjectid: #{params[:subjectid]} with result: #{aa}" + res = OpenTox::Authorization.delete_policies_from_uri(uri, subjectid) + LOGGER.debug "Policy deleted for Model URI: #{uri} with subjectid: #{subjectid} with result: #{res}" rescue LOGGER.warn "Policy delete error for Model URI: #{uri}" end end response['Content-Type'] = 'text/plain' "Model #{params[:id]} deleted." - rescue - halt 404, "Model #{params[:id]} does not exist." - end + rescue + halt 404, "Model #{params[:id]} does not exist." + end end @@ -20,6 +20,7 @@ end # Get model representation # @return [application/rdf+xml,application/x-yaml] Model representation get '/:id/?' do + accept = request.env['HTTP_ACCEPT'] accept = "application/rdf+xml" if accept == '*/*' or accept == '' or accept.nil? # workaround for browser links @@ -47,6 +48,33 @@ get '/:id/?' do end end +get '/:id/metadata.?:ext?' do + + metadata = YAML.load(ModelStore.get(params[:id]).yaml).metadata + + accept = request.env['HTTP_ACCEPT'] + accept = "application/rdf+xml" if accept == '*/*' or accept == '' or accept.nil? + if params[:ext] + case params[:ext] + when "yaml" + accept = 'application/x-yaml' + when "rdf", "rdfxml" + accept = 'application/rdf+xml' + end + end + response['Content-Type'] = accept + case accept + when /yaml/ + metadata.to_yaml + else #when /rdf/ and anything else + serializer = OpenTox::Serializer::Owl.new + serializer.add_metadata url_for("/#{params[:id]}",:full), metadata + serializer.to_rdfxml + end + +end + + # Store a lazar model. This method should not be called directly, use OpenTox::Algorithm::Lazr to create a lazar model # @param [Body] lazar Model representation in YAML format # @return [String] Model URI @@ -92,7 +120,7 @@ post '/:id/?' do end elsif dataset_uri task = OpenTox::Task.create("Predict dataset",url_for("/#{@lazar.id}", :full)) do - @lazar.predict_dataset(dataset_uri).uri + @lazar.predict_dataset(dataset_uri, subjectid).uri end halt 503,task.uri+"\n" if task.status == "Cancelled" halt 202,task.uri |