myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [2541] branches/discovery: svn merge -r2531:2540


From: noreply
Subject: [myexperiment-hackers] [2541] branches/discovery: svn merge -r2531:2540 svn+ssh://address@hidden org/var/svn/myexperiment/trunk
Date: Fri, 26 Nov 2010 11:10:32 -0500 (EST)

Revision
2541
Author
dgc
Date
2010-11-26 11:10:32 -0500 (Fri, 26 Nov 2010)

Log Message

svn merge -r2531:2540 svn+ssh://address@hidden/var/svn/myexperiment/trunk

Modified Paths

Diff

Modified: branches/discovery/app/controllers/api_controller.rb (2540 => 2541)


--- branches/discovery/app/controllers/api_controller.rb	2010-11-26 15:22:09 UTC (rev 2540)
+++ branches/discovery/app/controllers/api_controller.rb	2010-11-26 16:10:32 UTC (rev 2541)
@@ -72,9 +72,9 @@
     end  
 
     case rules['Type']
-      when 'index'; doc = rest_index_request(params[:uri], rules, user, request.query_parameters)
-      when 'crud';  doc = rest_crud_request(params[:uri], rules, user, request.query_parameters)
-      when 'call';  doc = rest_call_request(params[:uri], rules, user, request.query_parameters)
+      when 'index'; doc = rest_index_request(params[:uri], params[:format], rules, user, request.query_parameters)
+      when 'crud';  doc = rest_crud_request(params[:uri], params[:format], rules, user, request.query_parameters)
+      when 'call';  doc = rest_call_request(params[:uri], params[:format], rules, user, request.query_parameters)
       else;         return rest_response(400)
     end
   end

Modified: branches/discovery/app/controllers/workflows_controller.rb (2540 => 2541)


--- branches/discovery/app/controllers/workflows_controller.rb	2010-11-26 15:22:09 UTC (rev 2540)
+++ branches/discovery/app/controllers/workflows_controller.rb	2010-11-26 16:10:32 UTC (rev 2541)
@@ -580,7 +580,7 @@
     end
 
     params[:tag_list].split(',').each do |tag|
-      @workflow.add_tag(tag, current_user)
+      @workflow.add_tag(tag.strip, current_user)
     end
 
     redirect_to(workflow_url(@workflow))

Modified: branches/discovery/config/tables.xml


(Binary files differ)

Modified: branches/discovery/lib/maintenance/backup.rb (2540 => 2541)


--- branches/discovery/lib/maintenance/backup.rb	2010-11-26 15:22:09 UTC (rev 2540)
+++ branches/discovery/lib/maintenance/backup.rb	2010-11-26 16:10:32 UTC (rev 2541)
@@ -18,7 +18,7 @@
 
   def self.create(opts = {})
 
-    @backup_filename = DEFAULT_BACKUP_FILENAME
+    @backup_filename = ENV['FILE'] || DEFAULT_BACKUP_FILENAME
 
     def self.backup_database
 
@@ -227,7 +227,7 @@
     @mysql_user     = db_config["username"]
     @mysql_password = db_config["password"]
 
-    @backup_filename = DEFAULT_BACKUP_FILENAME
+    @backup_filename = ENV['FILE'] || DEFAULT_BACKUP_FILENAME
 
     # Clear the file cache
 

Modified: branches/discovery/lib/rest.rb (2540 => 2541)


--- branches/discovery/lib/rest.rb	2010-11-26 15:22:09 UTC (rev 2540)
+++ branches/discovery/lib/rest.rb	2010-11-26 16:10:32 UTC (rev 2541)
@@ -33,7 +33,14 @@
 def rest_routes(map)
   TABLES['REST'][:data].keys.each do |uri|
     TABLES['REST'][:data][uri].keys.each do |method|
-      map.connect "#{uri}.xml", :controller => 'api', :action ="" 'process_request', :uri => uri
+      formats = []
+
+      formats << "xml" if TABLES['REST'][:data][uri][method]["XML"]
+      formats << "rdf" if TABLES['REST'][:data][uri][method]["RDF"]
+
+      formats.each do |format|
+        map.connect "#{uri}.#{format}", :controller => 'api', :action ="" 'process_request', :uri => uri, :format => format
+      end
     end
   end
 end
@@ -324,7 +331,7 @@
   render(:xml => doc.to_s)
 end
 
-def rest_crud_request(req_uri, rules, user, query)
+def rest_crud_request(req_uri, format, rules, user, query)
 
   rest_name  = rules['REST Entity']
   model_name = rules['Model Entity']
@@ -409,7 +416,7 @@
   range
 end
 
-def rest_index_request(req_uri, rules, user, query)
+def rest_index_request(req_uri, format, rules, user, query)
 
   rest_name  = rules['REST Entity']
   model_name = rules['Model Entity']
@@ -787,11 +794,11 @@
   resource
 end
 
-def rest_access_redirect(req_uri, rules, user, query)
+def rest_access_redirect(opts = {})
 
-  return rest_response(400) if query['resource'].nil?
+  return rest_response(400) if opts[:query]['resource'].nil?
 
-  bits = parse_resource_uri(query['resource'])
+  bits = parse_resource_uri(opts[:query]['resource'])
 
   return rest_response(404) if bits.nil?
 
@@ -799,7 +806,7 @@
 
   return rest_response(404) if ob.nil?
 
-  return rest_response(401) if !Authorization.is_authorized?('view', nil, ob, user)
+  return rest_response(401) if !Authorization.is_authorized?('view', nil, ob, opts[:user])
 
   rest_response(307, :location => rest_access_uri(ob))
 end
@@ -849,20 +856,20 @@
       :update_mode => update_mode)
 end
 
-def workflow_aux(action, req_uri, rules, user, query)
+def workflow_aux(action, opts = {})
 
   # Obtain object
 
   case action
     when 'create':
-      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'Workflow', user, nil)
-      if query['id']
-        ob = obtain_rest_resource('Workflow', query['id'], query['version'], user, action)
+      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'Workflow', opts[:user], nil)
+      if opts[:query]['id']
+        ob = obtain_rest_resource('Workflow', opts[:query]['id'], opts[:query]['version'], opts[:user], action)
       else
-        ob = Workflow.new(:contributor => user)
+        ob = Workflow.new(:contributor => opts[:user])
       end
     when 'read', 'update', 'destroy':
-      ob = obtain_rest_resource('Workflow', query['id'], query['version'], user, action)
+      ob = obtain_rest_resource('Workflow', opts[:query]['id'], opts[:query]['version'], opts[:user], action)
     else
       raise "Invalid action '#{action}'"
   end
@@ -871,7 +878,7 @@
 
   if action == "destroy"
 
-    return rest_response(400, :reason => "Cannot delete individual versions") if query['version']
+    return rest_response(400, :reason => "Cannot delete individual versions") if opts[:query]['version']
       
     ob.destroy
 
@@ -980,7 +987,7 @@
       svg_file.close
     end
 
-    success = if (action == 'create' and query['id'])
+    success = if (action == 'create' and opts[:query]['id'])
       ob.save_as_new_version(revision_comment)
     else
       ob.save
@@ -990,10 +997,10 @@
 
     # Elements to update if we're not dealing with a workflow version
 
-    if query['version'].nil?
+    if opts[:query]['version'].nil?
 
       if ob.contribution.policy.nil?
-        ob.contribution.policy = create_default_policy(user)
+        ob.contribution.policy = create_default_policy(opts[:user])
         ob.contribution.save
       end
 
@@ -1003,34 +1010,34 @@
 
   ob = ob.versioned_resource if ob.respond_to?("versioned_resource")
 
-  rest_get_request(ob, "workflow", user,
+  rest_get_request(ob, "workflow", opts[:user],
       rest_resource_uri(ob), "workflow", { "id" => ob.id.to_s })
 end
 
-def post_workflow(req_uri, rules, user, query)
-  workflow_aux('create', req_uri, rules, user, query)
+def post_workflow(opts)
+  workflow_aux('create', opts)
 end
 
-def put_workflow(req_uri, rules, user, query)
-  workflow_aux('update', req_uri, rules, user, query)
+def put_workflow(opts)
+  workflow_aux('update', opts)
 end
 
-def delete_workflow(req_uri, rules, user, query)
-  workflow_aux('destroy', req_uri, rules, user, query)
+def delete_workflow(opts)
+  workflow_aux('destroy', opts)
 end
 
 # file handling
 
-def file_aux(action, req_uri, rules, user, query)
+def file_aux(action, opts = {})
 
   # Obtain object
 
   case action
     when 'create':
-      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'Blob', user, nil)
-      ob = Blob.new(:contributor => user)
+      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'Blob', opts[:user], nil)
+      ob = Blob.new(:contributor => opts[:user])
     when 'read', 'update', 'destroy':
-      ob = obtain_rest_resource('Blob', query['id'], query['version'], user, action)
+      ob = obtain_rest_resource('Blob', opts[:query]['id'], opts[:query]['version'], opts[:user], action)
     else
       raise "Invalid action '#{action}'"
   end
@@ -1107,41 +1114,41 @@
     end
 
     if ob.contribution.policy.nil?
-      ob.contribution.policy = create_default_policy(user)
+      ob.contribution.policy = create_default_policy(opts[:user])
       ob.contribution.save
     end
 
     update_permissions(ob, permissions)
   end
 
-  rest_get_request(ob, "file", user,
+  rest_get_request(ob, "file", opts[:user],
       rest_resource_uri(ob), "file", { "id" => ob.id.to_s })
 end
 
-def post_file(req_uri, rules, user, query)
-  file_aux('create', req_uri, rules, user, query)
+def post_file(opts)
+  file_aux('create', opts)
 end
 
-def put_file(req_uri, rules, user, query)
-  file_aux('update', req_uri, rules, user, query)
+def put_file(opts)
+  file_aux('update', opts)
 end
 
-def delete_file(req_uri, rules, user, query)
-  file_aux('destroy', req_uri, rules, user, query)
+def delete_file(opts)
+  file_aux('destroy', opts)
 end
 
 # pack handling
 
-def pack_aux(action, req_uri, rules, user, query)
+def pack_aux(action, opts = {})
 
   # Obtain object
 
   case action
     when 'create':
-      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'Pack', user, nil)
-      ob = Pack.new(:contributor => user)
+      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'Pack', opts[:user], nil)
+      ob = Pack.new(:contributor => opts[:user])
     when 'read', 'update', 'destroy':
-      ob = obtain_rest_resource('Pack', query['id'], query['version'], user, action)
+      ob = obtain_rest_resource('Pack', opts[:query]['id'], opts[:query]['version'], opts[:user], action)
     else
       raise "Invalid action '#{action}'"
   end
@@ -1171,30 +1178,30 @@
     end
 
     if ob.contribution.policy.nil?
-      ob.contribution.policy = create_default_policy(user)
+      ob.contribution.policy = create_default_policy(opts[:user])
       ob.contribution.save
     end
 
     update_permissions(ob, permissions)
   end
 
-  rest_get_request(ob, "pack", user,
+  rest_get_request(ob, "pack", opts[:user],
       rest_resource_uri(ob), "pack", { "id" => ob.id.to_s })
 end
 
-def post_pack(req_uri, rules, user, query)
-  pack_aux('create', req_uri, rules, user, query)
+def post_pack(opts)
+  pack_aux('create', opts)
 end
 
-def put_pack(req_uri, rules, user, query)
-  pack_aux('update', req_uri, rules, user, query)
+def put_pack(opts)
+  pack_aux('update', opts)
 end
 
-def delete_pack(req_uri, rules, user, query)
-  pack_aux('destroy', req_uri, rules, user, query)
+def delete_pack(opts)
+  pack_aux('destroy', opts)
 end
 
-def external_pack_item_aux(action, req_uri, rules, user, query)
+def external_pack_item_aux(action, opts = {})
 
   unless action == 'destroy'
 
@@ -1212,11 +1219,11 @@
   case action
     when 'create':
 
-      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'PackRemoteEntry', user, pack)
+      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'PackRemoteEntry', opts[:user], pack)
       return rest_response(400, :reason => "Pack not found") if pack.nil?
-      return rest_response(401) unless Authorization.is_authorized?('edit', nil, pack, user)
+      return rest_response(401) unless Authorization.is_authorized?('edit', nil, pack, opts[:user])
 
-      ob = PackRemoteEntry.new(:user => user,
+      ob = PackRemoteEntry.new(:user => opts[:user],
           :pack          => pack,
           :title         => title,
           :uri           => uri,
@@ -1225,10 +1232,10 @@
 
     when 'read', 'update', 'destroy':
 
-      ob = obtain_rest_resource('PackRemoteEntry', query['id'], query['version'], user, action)
+      ob = obtain_rest_resource('PackRemoteEntry', opts[:query]['id'], opts[:query]['version'], opts[:user], action)
 
       if ob
-        return rest_response(401) unless Authorization.is_authorized?('edit', nil, ob.pack, user)
+        return rest_response(401) unless Authorization.is_authorized?('edit', nil, ob.pack, opts[:user])
       end
 
     else
@@ -1253,23 +1260,23 @@
     end
   end
 
-  rest_get_request(ob, "external-pack-item", user,
+  rest_get_request(ob, "external-pack-item", opts[:user],
       rest_resource_uri(ob), "external-pack-item", { "id" => ob.id.to_s })
 end
 
-def post_external_pack_item(req_uri, rules, user, query)
-  external_pack_item_aux('create', req_uri, rules, user, query)
+def post_external_pack_item(opts)
+  external_pack_item_aux('create', opts)
 end
 
-def put_external_pack_item(req_uri, rules, user, query)
-  external_pack_item_aux('update', req_uri, rules, user, query)
+def put_external_pack_item(opts)
+  external_pack_item_aux('update', opts)
 end
 
-def delete_external_pack_item(req_uri, rules, user, query)
-  external_pack_item_aux('destroy', req_uri, rules, user, query)
+def delete_external_pack_item(opts)
+  external_pack_item_aux('destroy', opts)
 end
 
-def internal_pack_item_aux(action, req_uri, rules, user, query)
+def internal_pack_item_aux(action, opts = {})
 
   unless action == 'destroy'
 
@@ -1285,21 +1292,21 @@
   case action
     when 'create':
 
-      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'PackContributableEntry', user, pack)
+      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'PackContributableEntry', opts[:user], pack)
       return rest_response(400, :reason => "Pack not found") if pack.nil?
-      return rest_response(401) unless Authorization.is_authorized?('edit', nil, pack, user)
+      return rest_response(401) unless Authorization.is_authorized?('edit', nil, pack, opts[:user])
 
-      ob = PackContributableEntry.new(:user => user,
+      ob = PackContributableEntry.new(:user => opts[:user],
           :pack          => pack,
           :contributable => item,
           :comment       => comment)
 
     when 'read', 'update', 'destroy':
 
-      ob = obtain_rest_resource('PackContributableEntry', query['id'], query['version'], user, action)
+      ob = obtain_rest_resource('PackContributableEntry', opts[:query]['id'], opts[:query]['version'], opts[:user], action)
 
       if ob
-        return rest_response(401) unless Authorization.is_authorized?('edit', nil, ob.pack, user)
+        return rest_response(401) unless Authorization.is_authorized?('edit', nil, ob.pack, opts[:user])
       end
 
     else
@@ -1321,23 +1328,23 @@
     end
   end
 
-  rest_get_request(ob, "internal-pack-item", user,
+  rest_get_request(ob, "internal-pack-item", opts[:user],
       rest_resource_uri(ob), "internal-pack-item", { "id" => ob.id.to_s })
 end
 
-def post_internal_pack_item(req_uri, rules, user, query)
-  internal_pack_item_aux('create', req_uri, rules, user, query)
+def post_internal_pack_item(opts)
+  internal_pack_item_aux('create', opts)
 end
 
-def put_internal_pack_item(req_uri, rules, user, query)
-  internal_pack_item_aux('update', req_uri, rules, user, query)
+def put_internal_pack_item(opts)
+  internal_pack_item_aux('update', opts)
 end
 
-def delete_internal_pack_item(req_uri, rules, user, query)
-  internal_pack_item_aux('destroy', req_uri, rules, user, query)
+def delete_internal_pack_item(opts)
+  internal_pack_item_aux('destroy', opts)
 end
 
-# def post_job(req_uri, rules, user, query)
+# def post_job(opts)
 #
 #   title       = params["job"]["title"]
 #   description = params["job"]["description"]
@@ -1357,14 +1364,14 @@
 #   runner     = TavernaEnactor.find_by_id(runner_bits[1].to_i)
 #   runnable   = Workflow.find_by_id(runnable_bits[1].to_i)
 #
-#   return rest_response(400) if experiment.nil? or not Authorization.is_authorized?('edit', nil, experiment, user)
-#   return rest_response(400) if runner.nil?     or not Authorization.is_authorized?('download', nil, runner, user)
-#   return rest_response(400) if runnable.nil?   or not Authorization.is_authorized?('view', nil, runnable, user)
+#   return rest_response(400) if experiment.nil? or not Authorization.is_authorized?('edit', nil, experiment, opts[:user])
+#   return rest_response(400) if runner.nil?     or not Authorization.is_authorized?('download', nil, runner, opts[:user])
+#   return rest_response(400) if runnable.nil?   or not Authorization.is_authorized?('view', nil, runnable, opts[:user])
 #
 #   puts "#{params[:job]}"
 #
 #   job = Job.new(:title => title, :description => description, :runnable => runnable, 
-#       :experiment => experiment, :runner => runner, :user => user,
+#       :experiment => experiment, :runner => runner, :user => opts[:user],
 #       :runnable_version => runnable.current_version)
 #
 #   inputs = { "Tags" => "aa,bb,aa,cc,aa" }
@@ -1393,14 +1400,14 @@
   }
 end
 
-def search(req_uri, rules, user, query)
+def search(opts)
 
-  search_query = query['query']
+  search_query = opts[:query]['query']
 
   # Start of curation hack
 
-  if search_query[0..1].downcase == 'c:' && user &&
-      Conf.curators.include?(user.username)
+  if search_query[0..1].downcase == 'c:' && opts[:user] &&
+      Conf.curators.include?(opts[:user].username)
 
     bits = search_query.match("^c:([a-z]*) ([0-9]+)-([0-9]+)$")
 
@@ -1415,9 +1422,9 @@
 
       obs = model.find(:all, :conditions => ['id >= ? AND id <= ?', bits[2], bits[3]])
 
-      obs = (obs.select do |c| c.respond_to?('contribution') == false or Authorization.is_authorized?("view", nil, c, user) end)
+      obs = (obs.select do |c| c.respond_to?('contribution') == false or Authorization.is_authorized?("view", nil, c, opts[:user]) end)
 
-      return produce_rest_list(req_uri, rules, query, obs, 'search', {}, user)
+      return produce_rest_list(opts[:req_uri], opts[:rules], opts[:query], obs, 'search', {}, opts[:user])
     end
   end
 
@@ -1427,11 +1434,11 @@
 
   # parse type option
 
-  if query['type']
+  if opts[:query]['type']
 
     models = []
 
-    query['type'].split(',').each do |type|
+    opts[:query]['type'].split(',').each do |type|
       case type
         when 'user';     models.push(User)
         when 'workflow'; models.push(Workflow)
@@ -1446,27 +1453,27 @@
 
   num = 25
 
-  if query['num']
-    num = query['num'].to_i
+  if opts[:query]['num']
+    num = opts[:query]['num'].to_i
   end
 
   num = 25  if num < 0
   num = 100 if num > 100
 
-  page  = query['page'] ? query['page'].to_i : 1
+  page  = opts[:query]['page'] ? opts[:query]['page'].to_i : 1
 
   page = 1 if page < 1
 
   attributes = {}
   attributes['query'] = search_query
-  attributes['type'] = query['type'] if models.length == 1
+  attributes['type'] = opts[:query]['type'] if models.length == 1
 
-  obs = paginated_search_index(search_query, models, num, page, user)
+  obs = paginated_search_index(search_query, models, num, page, opts[:user])
 
-  produce_rest_list(req_uri, rules, query, obs, 'search', attributes, user)
+  produce_rest_list(opts[:req_uri], opts[:rules], opts[:query], obs, 'search', attributes, opts[:user])
 end
 
-def user_count(req_uri, rules, user, query)
+def user_count(opts)
   
   users = User.find(:all).select do |user| user.activated? end
 
@@ -1479,7 +1486,7 @@
   render(:xml => doc.to_s)
 end
 
-def group_count(req_uri, rules, user, query)
+def group_count(opts)
   
   root = LibXML::XML::Node.new('group-count')
   root << Network.count.to_s
@@ -1490,10 +1497,10 @@
   render(:xml => doc.to_s)
 end
 
-def workflow_count(req_uri, rules, user, query)
+def workflow_count(opts)
   
   workflows = Workflow.find(:all).select do |w|
-    Authorization.is_authorized?('view', nil, w, user)
+    Authorization.is_authorized?('view', nil, w, opts[:user])
   end
 
   root = LibXML::XML::Node.new('workflow-count')
@@ -1505,10 +1512,10 @@
   render(:xml => doc.to_s)
 end
 
-def pack_count(req_uri, rules, user, query)
+def pack_count(opts)
   
   packs = Pack.find(:all).select do |p|
-    Authorization.is_authorized?('view', nil, p, user)
+    Authorization.is_authorized?('view', nil, p, opts[:user])
   end
 
   root = LibXML::XML::Node.new('pack-count')
@@ -1520,7 +1527,7 @@
   render(:xml => doc.to_s)
 end
 
-def content_type_count(req_uri, rules, user, query)
+def content_type_count(opts)
 
   root = LibXML::XML::Node.new('type-count')
   root << ContentType.count.to_s
@@ -1531,35 +1538,35 @@
   render(:xml => doc.to_s)
 end
 
-def get_tagged(req_uri, rules, user, query)
+def get_tagged(req_uri, user, query)
 
-  return rest_response(400) if query['tag'].nil?
+  return rest_response(400) if opts[:query]['tag'].nil?
 
-  tag = Tag.find_by_name(query['tag'])
+  tag = Tag.find_by_name(opts[:query]['tag'])
 
   obs = tag ? tag.tagged : []
 
   # filter out ones they are not allowed to get
-  obs = (obs.select do |c| c.respond_to?('contribution') == false or Authorization.is_authorized?("index", nil, c, user) end)
+  obs = (obs.select do |c| c.respond_to?('contribution') == false or Authorization.is_authorized?("index", nil, c, opts[:user]) end)
 
-  produce_rest_list("tagged", rules, query, obs, 'tagged', [], user)
+  produce_rest_list("tagged", opts[:rules], opts[:query], obs, 'tagged', [], opts[:user])
 end
 
-def tag_cloud(req_uri, rules, user, query)
+def tag_cloud(opts)
 
   num  = 25
   type = nil
 
-  if query['num']
-    if query['num'] == 'all'
+  if opts[:query]['num']
+    if opts[:query]['num'] == 'all'
       num = nil
     else
-      num = query['num'].to_i
+      num = opts[:query]['num'].to_i
     end
   end
 
-  if query['type'] and query['type'] != 'all'
-    type = query['type'].camelize
+  if opts[:query]['type'] and opts[:query]['type'] != 'all'
+    type = opts[:query]['type'].camelize
 
     type = 'Network' if type == 'Group'
     type = 'Blob'    if type == 'File'
@@ -1572,10 +1579,10 @@
   root = LibXML::XML::Node.new('tag-cloud')
   doc.root = root
 
-  root['type'] = query['type'] ? query['type'] : 'all'
+  root['type'] = opts[:query]['type'] ? opts[:query]['type'] : 'all'
 
   tags.each do |tag|
-    tag_node = rest_reference(tag, query)
+    tag_node = rest_reference(tag, opts[:query])
     tag_node['count'] = tag.taggings_count.to_s
     root << tag_node
   end
@@ -1583,9 +1590,12 @@
   render(:xml => doc.to_s)
 end
 
-def whoami_redirect(req_uri, rules, user, query)
-  if user.class == User
-    rest_response(307, :location => rest_access_uri(user))
+def whoami_redirect(opts)
+  if opts[:user].class == User
+    case opts[:format]
+      when "xml": rest_response(307, :location => rest_access_uri(opts[:user]))
+      when "rdf": rest_response(307, :location => formatted_user_url(:id => opts[:user].id, :format => 'rdf'))
+    end
   else
     rest_response(401)
   end
@@ -1654,17 +1664,17 @@
 
 # Comments
 
-def comment_aux(action, req_uri, rules, user, query)
+def comment_aux(action, opts)
 
   # Obtain object
 
   case action
     when 'create':
-      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'Comment', user, nil)
+      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'Comment', opts[:user], nil)
 
-      ob = Comment.new(:user => user)
+      ob = Comment.new(:user => opts[:user])
     when 'read', 'update', 'destroy':
-      ob = obtain_rest_resource('Comment', query['id'], query['version'], user, action)
+      ob = obtain_rest_resource('Comment', opts[:query]['id'], opts[:query]['version'], opts[:user], action)
     else
       raise "Invalid action '#{action}'"
   end
@@ -1686,7 +1696,7 @@
 
     if subject
       return rest_response(400) unless [Blob, Network, Pack, Workflow].include?(subject.class)
-      return rest_response(401) unless Authorization.is_authorized_for_type?(action, 'Comment', user, subject)
+      return rest_response(401) unless Authorization.is_authorized_for_type?(action, 'Comment', opts[:user], subject)
       ob.commentable = subject
     end
 
@@ -1705,8 +1715,8 @@
       return matches[0] if matches.length == 1
     end
 
-    if comment[0..1].downcase == 'c:' && user && subject &&
-        Conf.curators.include?(user.username)
+    if comment[0..1].downcase == 'c:' && opts[:user] && subject &&
+        Conf.curators.include?(opts[:user].username)
 
       comment = comment[2..-1].strip
 
@@ -1736,7 +1746,7 @@
 
             if curation_type
               events.push(CurationEvent.new(:category => curation_type,
-                    :object => subject, :user => user, :details => details))
+                    :object => subject, :user => opts[:user], :details => details))
             else
               failed = true
             end
@@ -1754,7 +1764,7 @@
 
       subject.solr_save
 
-      return rest_get_request(ob, "comment", user, rest_resource_uri(ob),
+      return rest_get_request(ob, "comment", opts[:user], rest_resource_uri(ob),
         "comment", { "id" => ob.id.to_s })
     end
 
@@ -1763,34 +1773,34 @@
     return rest_response(400, :object => ob) unless ob.save
   end
 
-  rest_get_request(ob, "comment", user, rest_resource_uri(ob), "comment", { "id" => ob.id.to_s })
+  rest_get_request(ob, "comment", opts[:user], rest_resource_uri(ob), "comment", { "id" => ob.id.to_s })
 end
 
-def post_comment(req_uri, rules, user, query)
-  comment_aux('create', req_uri, rules, user, query)
+def post_comment(opts)
+  comment_aux('create', opts)
 end
 
-def put_comment(req_uri, rules, user, query)
-  comment_aux('update', req_uri, rules, user, query)
+def put_comment(opts)
+  comment_aux('update', opts)
 end
 
-def delete_comment(req_uri, rules, user, query)
-  comment_aux('destroy', req_uri, rules, user, query)
+def delete_comment(opts)
+  comment_aux('destroy', opts)
 end
 
 # Favourites
 
-def favourite_aux(action, req_uri, rules, user, query)
+def favourite_aux(action, opts)
 
   # Obtain object
 
   case action
     when 'create':
-      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'Bookmark', user, nil)
+      return rest_response(401) unless Authorization.is_authorized_for_type?('create', 'Bookmark', opts[:user], nil)
 
-      ob = Bookmark.new(:user => user)
+      ob = Bookmark.new(:user => opts[:user])
     when 'read', 'update', 'destroy':
-      ob = obtain_rest_resource('Bookmark', query['id'], query['version'], user, action)
+      ob = obtain_rest_resource('Bookmark', opts[:query]['id'], opts[:query]['version'], opts[:user], action)
     else
       raise "Invalid action '#{action}'"
   end
@@ -1809,31 +1819,31 @@
 
     if target
       return rest_response(400) unless [Blob, Pack, Workflow].include?(target.class)
-      return rest_response(401) unless Authorization.is_authorized_for_type?(action, 'Bookmark', user, target)
+      return rest_response(401) unless Authorization.is_authorized_for_type?(action, 'Bookmark', opts[:user], target)
       ob.bookmarkable = target
     end
 
     return rest_response(400, :object => ob) unless ob.save
   end
 
-  rest_get_request(ob, "favourite", user, rest_resource_uri(ob), "favourite", { "id" => ob.id.to_s })
+  rest_get_request(ob, "favourite", opts[:user], rest_resource_uri(ob), "favourite", { "id" => ob.id.to_s })
 end
 
-def post_favourite(req_uri, rules, user, query)
-  favourite_aux('create', req_uri, rules, user, query)
+def post_favourite(opts)
+  favourite_aux('create', opts)
 end
 
-def put_favourite(req_uri, rules, user, query)
-  favourite_aux('update', req_uri, rules, user, query)
+def put_favourite(opts)
+  favourite_aux('update', opts)
 end
 
-def delete_favourite(req_uri, rules, user, query)
-  favourite_aux('destroy', req_uri, rules, user, query)
+def delete_favourite(opts)
+  favourite_aux('destroy', opts)
 end
 
 # Call dispatcher
 
-def rest_call_request(req_uri, rules, user, query)
-  eval("#{rules['Function']}(req_uri, rules, user, query)")
+def rest_call_request(req_uri, format, rules, user, query)
+  eval("#{rules['Function']}(:req_uri => req_uri, :format => format, :rules => rules, :user => user, :query => query)")
 end
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]