Last active
March 8, 2016 14:51
-
-
Save ubergeekzone/c2154aeb41fd844b12f0 to your computer and use it in GitHub Desktop.
A Sample Ruby API Grape Framework Mock
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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