module Grape::Resources

Constants

VERSION

Public Class Methods

apply_attributes(instance, params) click to toggle source
# File lib/grape/resources.rb, line 89
def apply_attributes(instance, params)
  instance.attributes.each do |attribute|
    attribute_name = attribute[0]
    instance.send("#{attribute_name}=",params[attribute_name.to_sym]) if params[attribute_name.to_sym]           
  end
end
create_endpoint_for(clazz, api_instance) click to toggle source
# File lib/grape/resources.rb, line 62
def create_endpoint_for(clazz, api_instance)
  singular_name = singular_name_for clazz
  api_instance.post do
    result = clazz.new
    
    Grape::Resources.apply_attributes(result, params)
    error!( {error: "#{singular_name} is not valid", errors: result.errors.full_messages}, 405) unless result.valid?
    
    result.save
  end
end
delete_endpoint_for(clazz, api_instance) click to toggle source
# File lib/grape/resources.rb, line 52
def delete_endpoint_for(clazz, api_instance) 
  singular_name = singular_name_for clazz
  
  api_instance.delete ":id" do
    result = Grape::Resources.find(clazz, params)
    error!( "#{singular_name} not found", 404) if result.nil?
    result.destroy
  end
end
find(clazz, params) click to toggle source
# File lib/grape/resources.rb, line 100
def find(clazz, params)
  result = clazz.find_by_id( params[:id])
end
get_endpoint_for(clazz, api_instance) click to toggle source
# File lib/grape/resources.rb, line 43
def get_endpoint_for(clazz, api_instance)   
  singular_name = singular_name_for clazz  
  api_instance.get ":id" do
    result = Grape::Resources.find(clazz, params)
    error!( "#{singular_name} not found", 404) if result.nil?
    result
  end
end
list(clazz, params) click to toggle source
# File lib/grape/resources.rb, line 96
def list(clazz, params)
  result = clazz.all
end
list_endpoint_for(clazz, api_instance) click to toggle source
# File lib/grape/resources.rb, line 36
def list_endpoint_for(clazz, api_instance)
  api_instance.get do
    result = Grape::Resources.list(clazz, params)
    result
  end
end
load_singular_endpoints( clazz, api_instance, methods) click to toggle source
# File lib/grape/resources.rb, line 25
def load_singular_endpoints( clazz, api_instance, methods)
  singular_name = singular_name_for clazz

  api_instance.resource singular_name.to_sym do
    Grape::Resources.get_endpoint_for( clazz, api_instance ) if methods.include?(:get)
    Grape::Resources.create_endpoint_for( clazz, api_instance ) if methods.include?(:post)        
    Grape::Resources.update_endpoint_for( clazz, api_instance ) if methods.include?(:put)               
    Grape::Resources.delete_endpoint_for( clazz, api_instance) if methods.include?(:delete)
  end
end
singular_name_for( clazz ) click to toggle source
# File lib/grape/resources.rb, line 104
def singular_name_for( clazz ) 
  clazz.name.underscore
end
update_endpoint_for(clazz, api_instance) click to toggle source
# File lib/grape/resources.rb, line 74
def update_endpoint_for(clazz, api_instance)
  singular_name = singular_name_for clazz

  api_instance.put ":id" do
    result = clazz.find_by_id(params[:id])        
    error!( {error: "#{singular_name} with id '#{params[:id]}' was not found"}, 404) unless result.present?
    
    Grape::Resources.apply_attributes(result, params)
    error!( {error: "#{singular_name} is not valid", errors: result.errors.full_messages}, 405) unless result.valid?
    
    result.save          
    result          
  end
end