From 56f27930a86502618be51c821367cc386d144f5e Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 30 Oct 2012 23:28:17 -0400 Subject: [PATCH] band APIs --- app/controllers/api_bands_controller.rb | 8 ++++++++ app/views/api_bands/index.rabl | 4 ++++ app/views/api_bands/show.rabl | 24 ++++++++++++++++++++++++ config/routes.rb | 8 ++++---- 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/app/controllers/api_bands_controller.rb b/app/controllers/api_bands_controller.rb index cc4ec602e..d0d7ba542 100644 --- a/app/controllers/api_bands_controller.rb +++ b/app/controllers/api_bands_controller.rb @@ -4,4 +4,12 @@ class ApiBandsController < ApplicationController respond_to :json + def index + @bands = Band.paginate(page: params[:page]) + end + + def show + @band = Band.find(params[:id]) + end + end \ No newline at end of file diff --git a/app/views/api_bands/index.rabl b/app/views/api_bands/index.rabl index e69de29bb..def94e9f6 100644 --- a/app/views/api_bands/index.rabl +++ b/app/views/api_bands/index.rabl @@ -0,0 +1,4 @@ +collection @bands + +# do not retrieve all child collections when showing a list of bands +attributes :id, :name, :photo_url, :logo_url \ No newline at end of file diff --git a/app/views/api_bands/show.rabl b/app/views/api_bands/show.rabl index e69de29bb..83a4c8c63 100644 --- a/app/views/api_bands/show.rabl +++ b/app/views/api_bands/show.rabl @@ -0,0 +1,24 @@ +object @band + +attributes :id, :name, :website, :biography, :photo_url, :logo_url + +unless @band.users.nil? || @band.users.size == 0 + child :users => :musicians do + attributes :id, :name, :photo_url + + # TODO: figure out how to omit empty arrays + node :instruments do |user| + unless user.instruments.nil? || user.instruments.size == 0 + child :musician_instruments => :instruments do + attributes :description, :proficiency_level + end + end + end + end +end + +unless @band.genres.nil? || @band.genres.size == 0 + child :genres => :genres do + attributes :id, :description + end +end \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 73064923c..f7a5e8336 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -44,12 +44,12 @@ SampleApp::Application.routes.draw do match '/users/:id' => 'api_users#destroy', :via => :delete # bands -=begin match '/bands' => 'api_bands#index', :via => :get - match '/bands/:id' => 'api_bands#show' :via => :get, :as => 'api_band_detail' + match '/bands/:id' => 'api_bands#show', :via => :get, :as => 'api_band_detail' +=begin match '/bands' => 'api_bands#create', :via => :post - match '/bands/:id' => 'api_bands#update', :via => :put - match '/bands/:id/members' => 'api_bands#members_index', :via => :get + match '/bands/:id' => 'api_bands#update', :via => :post + match '/bands/:id/musicians' => 'api_bands#musicians_index', :via => :get =end # friend requests