From 8da4d1a42d4dfa904454c759fb6d748b6f1a300d Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Sat, 13 Oct 2012 22:22:13 -0400 Subject: [PATCH] friend API development --- app/controllers/api_users_controller.rb | 48 +++++++++++++++++++++++++ app/views/api_users/index.rabl | 3 ++ app/views/api_users/show.rabl | 7 ++++ config/initializers/rabl_init.rb | 2 +- config/routes.rb | 19 ++++++++++ 5 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 app/controllers/api_users_controller.rb create mode 100644 app/views/api_users/index.rabl create mode 100644 app/views/api_users/show.rabl diff --git a/app/controllers/api_users_controller.rb b/app/controllers/api_users_controller.rb new file mode 100644 index 000000000..a30b69203 --- /dev/null +++ b/app/controllers/api_users_controller.rb @@ -0,0 +1,48 @@ +class ApiUsersController < ApplicationController + + before_filter :signed_in_user, only: [:index, :edit, :update, :destroy] + + respond_to :json + + def index + @users = User.paginate(page: params[:page]) + end + + def create + @user = User.new() + @user.creator = current_user + @user.description = params[:description] + @user.save + respond_with @user, responder: ApiResponder, :location => api_user_detail_url(@user) + end + + def show + @user = User.find(params[:id]) + end + + def delete + @user = User.find(params[:id]) + @user.delete + + respond_with @user, responder: ApiResponder + end + + def friend_request_index + end + + def friend_request_create + end + + def friend_index + end + + def friend_create + end + + def friend_show + end + + def friend_destroy + end + +end \ No newline at end of file diff --git a/app/views/api_users/index.rabl b/app/views/api_users/index.rabl new file mode 100644 index 000000000..ca9dc66b9 --- /dev/null +++ b/app/views/api_users/index.rabl @@ -0,0 +1,3 @@ +collection @users + +extends "api_users/show" diff --git a/app/views/api_users/show.rabl b/app/views/api_users/show.rabl new file mode 100644 index 000000000..bdc5be9b2 --- /dev/null +++ b/app/views/api_users/show.rabl @@ -0,0 +1,7 @@ +object @user + +attributes :id, :name, :email, :admin + +child :friends => :friends do + attributes :id, :name, :online +end \ No newline at end of file diff --git a/config/initializers/rabl_init.rb b/config/initializers/rabl_init.rb index 5d9ac3cde..cfa6b995c 100644 --- a/config/initializers/rabl_init.rb +++ b/config/initializers/rabl_init.rb @@ -13,7 +13,7 @@ Rabl.configure do |config| # config.include_bson_root = true # config.include_plist_root = true # config.include_xml_root = false - # config.include_child_root = true + config.include_child_root = false # config.enable_json_callbacks = false # config.xml_options = { :dasherize => true, :skip_types => false } # config.view_paths = [] diff --git a/config/routes.rb b/config/routes.rb index 32ed1c8e9..501a8228d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -23,6 +23,7 @@ SampleApp::Application.routes.draw do match '/client', to: 'clients#index' scope '/api' do + # music sessions match '/sessions/:id/participants' => 'api_music_sessions#participant_create', :via => :post match '/participants/:id' => 'api_music_sessions#participant_show', :via => :get, :as => 'api_session_participant_detail' match '/participants/:id' => 'api_music_sessions#participant_delete', :via => :delete @@ -31,5 +32,23 @@ SampleApp::Application.routes.draw do match '/sessions' => 'api_music_sessions#index', :via => :get match '/sessions' => 'api_music_sessions#create', :via => :post + # users + match '/users' => 'api_users#index', :via => :get + match '/users' => 'api_users#create', :via => :post + match '/users/:id' => 'api_users#show', :via => :get, :as => 'api_user_detail' + match '/users/:id' => 'api_users#edit', :via => :put + match '/users/:id' => 'api_users#destroy', :via => :delete + + # friend requests + match '/users/:id/friend_requests' => 'api_users#friend_request_index', :via => :get + match '/users/:id/friend_requests' => 'api_users#friend_request_create', :via => :post + match '/users/:id/friends/:friend_request_id' => 'api_users#friend_request_show', :via => :get, :as => 'api_user_friend_request_detail' + match '/users/:id/friends/:friend_request_id' => 'api_users#friend_request_edit', :via => :put + + # friends + match '/users/:id/friends' => 'api_users#friend_index', :via => :get + match '/users/:id/friends' => 'api_users#friend_create', :via => :post + match '/users/:id/friends/:friend_id' => 'api_users#friend_show', :via => :get, :as => 'api_user_friend_detail' + match '/users/:id/friends/:friend_id' => 'api_users#friend_destroy', :via => :delete end end