Network API rev 3 - Collection helpers (passing context to views - check for presence of resource)
diff --git a/server/lib/deltacloud/helpers/deltacloud_helper.rb b/server/lib/deltacloud/helpers/deltacloud_helper.rb
index e069312..242effc 100644
--- a/server/lib/deltacloud/helpers/deltacloud_helper.rb
+++ b/server/lib/deltacloud/helpers/deltacloud_helper.rb
@@ -65,18 +65,19 @@
http_method || Deltacloud::Rabbit::BaseCollection.http_method_for(action)
end
- def filter_all(model)
+ def filter_all(model, opts={})
begin
@benchmark = Benchmark.measure { @elements = driver.send(model.to_sym, credentials, params) }
rescue => e
@exception = e
end
+ locals = opts[:check] ? {:elements => @elements, opts[:check]=>driver.respond_to?(opts[:check])} : {:elements => @elements}
if @elements
headers['X-Backend-Runtime'] = @benchmark.real.to_s
instance_variable_set(:"@#{model}", @elements)
respond_to do |format|
- format.html { haml :"#{model}/index", :locals => { :elements => @elements } }
- format.xml { haml :"#{model}/index", :locals => { :elements => @elements } }
+ format.html { haml :"#{model}/index", :locals => locals}
+ format.xml { haml :"#{model}/index", :locals => locals}
format.json { JSON::dump({ model => @elements.map { |el| el.to_hash(self) }}) }
end
else
@@ -84,16 +85,18 @@
end
end
- def show(model)
+ def show(model, opts={})
@benchmark = Benchmark.measure do
@element = driver.send(model, credentials, { :id => params[:id]} )
end
headers['X-Backend-Runtime'] = @benchmark.real.to_s
instance_variable_set("@#{model}", @element)
+ #checks for methods in opts:
+ locals = opts[:check] ? {model => @element, opts[:check]=>driver.respond_to?(opts[:check])} : {model => @element}
if @element
respond_to do |format|
- format.html { haml :"#{model.to_s.pluralize}/show", :locals=>{model=>@element}}
- format.xml { haml :"#{model.to_s.pluralize}/show" , :locals=>{model=>@element}}
+ format.html { haml :"#{model.to_s.pluralize}/show", :locals=>locals}
+ format.xml { haml :"#{model.to_s.pluralize}/show" , :locals=>locals}
format.json { JSON::dump(model => @element.to_hash(self)) }
end
else
diff --git a/server/lib/deltacloud/helpers/rabbit_helper.rb b/server/lib/deltacloud/helpers/rabbit_helper.rb
index cdd0ae1..3c4d43f 100644
--- a/server/lib/deltacloud/helpers/rabbit_helper.rb
+++ b/server/lib/deltacloud/helpers/rabbit_helper.rb
@@ -18,15 +18,15 @@
def self.standard_index_operation(opts={})
collection_name = @collection_name
- operation :index, :with_capability => opts[:capability] || collection_name do
- control { filter_all collection_name }
+ operation :index, :with_capability => opts.delete(:capability) || collection_name do
+ control { filter_all collection_name, opts }
end
end
def self.standard_show_operation(opts={})
collection_name = @collection_name
- operation :show, :with_capability => opts[:capability] || collection_name do
- control { show collection_name.to_s.singularize.intern }
+ operation :show, :with_capability => opts.delete(:capability) || collection_name do
+ control { show collection_name.to_s.singularize.intern, opts}
end
end