From 5e34506df6e349fb9875bc56cf97f302e1983938 Mon Sep 17 00:00:00 2001 From: Daniel Vincent Grippi Date: Sun, 29 Aug 2010 23:46:19 -0700 Subject: [PATCH] added custom as_json methods to models --- app/controllers/people_controller.rb | 2 ++ app/controllers/users_controller.rb | 2 +- app/models/group.rb | 8 +++++--- app/models/person.rb | 12 ++++++++++++ app/models/post.rb | 9 +++++++++ app/models/user.rb | 13 +++++++++++++ 6 files changed, 42 insertions(+), 4 deletions(-) diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index bb11e9571..f1675c9ac 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -20,6 +20,8 @@ class PeopleController < ApplicationController @latest_status_message = current_user.raw_visible_posts.find_all_by__type_and_person_id("StatusMessage", params[:id]).last @post_count = @posts.count + + respond_with @person end def destroy diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 12853f318..9964778fb 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2,7 +2,7 @@ class UsersController < ApplicationController before_filter :authenticate_user!, :except => [:new, :create] respond_to :html - respond_to :json, :only => [:index, :show] + respond_to :json, :only => :show def show @user = User.find_by_id params[:id] diff --git a/app/models/group.rb b/app/models/group.rb index 0c5fa05b2..385d1a5a2 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -27,9 +27,11 @@ class Group def as_json(opts = {}) { - "name" => self.name, - "people" => self.people.each{|person| person.as_json}, - "posts" => self.posts.each {|post| post.as_json }, + :group => { + :name => self.name, + :people => self.people.each{|person| person.as_json}, + :posts => self.posts.each {|post| post.as_json }, + } } end end diff --git a/app/models/person.rb b/app/models/person.rb index e0d8b17bf..7853b9d17 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -76,6 +76,18 @@ class Person owner.nil? end + def as_json(opts={}) + { + :person => { + :id => self.id, + :name => self.real_name, + :email => self.email, + :url => self.url, + :exported_key => exported_key + } + } + end + protected def clean_url self.url ||= "http://localhost:3000/" if self.class == User diff --git a/app/models/post.rb b/app/models/post.rb index 00345837e..27fcc8cfd 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -44,6 +44,15 @@ class Post signable_accessors.collect{|accessor| (self.send accessor.to_sym).to_s}.join ';' end + + def as_json(opts={}) + { + :post => { + :id => self.id, + :person => self.person.as_json, + } + } + end protected def destroy_comments diff --git a/app/models/user.rb b/app/models/user.rb index f16a2509c..39c3d15c8 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -281,6 +281,19 @@ class User def all_group_ids self.groups.all.collect{|x| x.id} end + + def as_json(opts={}) + { + :user => { + :posts => self.raw_visible_posts.each{|post| post.as_json}, + :friends => self.friends.each {|friend| friend.as_json}, + :groups => self.groups.each {|group| group.as_json}, + :pending_requests => self.pending_requests.each{|request| request.as_json}, + } + } + end + + protected def self.generate_key