Skip to content

Instantly share code, notes, and snippets.

@ubergeekzone
Last active March 8, 2016 14:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ubergeekzone/c2154aeb41fd844b12f0 to your computer and use it in GitHub Desktop.
Save ubergeekzone/c2154aeb41fd844b12f0 to your computer and use it in GitHub Desktop.
A Sample Ruby API Grape Framework Mock
module Orders
class API < Grape::API
version 'v1', using: :header, vendor: 'invoate'
format :json
prefix :api
helpers do
def current_user
@current_user ||= User.authorize!(env)
end
def authenticate!
error!('401 Unauthorized', 401) unless current_user
end
end
desc 'Return an order by id.'
params do
requires :id, type: Integer, desc: 'Order ID'
end
route_param :id do
get do
Order.find(params[:id])
end
end
desc 'Create an order.'
params do
requires :name, type: String, desc: 'Order Name'
end
post do
authenticate!
Order.create!({
user: current_user, #we defined our current user in the helper which will allow access to our logged in user
order_name: params[:name]
})
end
desc 'Update an order.'
params do
requires :id, type: String, desc: 'Order ID'
requires :name, type: String, desc: 'Order Name'
end
put ':id' do
authenticate!
current_user.orders.find(params[:id]).update({
user: current_user,
order_name: params[:name]
})
end
desc 'Delete an order.'
params do
requires :id, type: String, desc: 'Order ID'
end
delete ':id' do
authenticate! #make sure the user is authenticated before allowing delete
current_user.orders.find(params[:id]).destroy
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment