Commit 3d17bbb1a88d56c95ab7f1669e49c5989e9308b5

Authored by Leandro Santos
Committed by Rodrigo Souto
1 parent 62b5dade

refactoring api

lib/api/entities.rb
... ... @@ -2,6 +2,7 @@ module API
2 2 module Entities
3 3  
4 4 class Image < Grape::Entity
  5 + root 'images', 'image'
5 6  
6 7 expose :icon_url do |image, options|
7 8 image.public_filename(:icon)
... ... @@ -28,10 +29,12 @@ module API
28 29 class Person < Profile;end;
29 30 class Enterprise < Profile;end;
30 31 class Community < Profile
  32 + root 'communities', 'community'
31 33 expose :description
32 34 end
33 35  
34 36 class Category < Grape::Entity
  37 + root 'categories', 'category'
35 38 expose :name, :id, :slug
36 39 expose :image, :using => Image
37 40 end
... ... @@ -44,12 +47,6 @@ module API
44 47 expose :author, :using => Profile
45 48 expose :profile, :using => Profile
46 49 expose :categories, :using => Category
47   -#, :if => lambda { |instance, options| raise params.inspect }
48   -# do |instance, options|
49   -# # examine available environment keys with `p options[:env].keys`
50   -# options[:user]
51   -# end
52   -
53 50 end
54 51  
55 52 class Comment < Grape::Entity
... ...
lib/api/helpers.rb
... ... @@ -163,6 +163,9 @@ module API
163 163 error!({'message' => message, :code => status}, status)
164 164 end
165 165  
  166 + def render_api_errors!(messages)
  167 + render_api_error!(messages.join(','), 400)
  168 + end
166 169 protected
167 170  
168 171 def detect_stuff_by_domain
... ...
lib/api/v1/articles.rb
... ... @@ -66,7 +66,9 @@ module API
66 66 community = environment.communities.find(params[:community_id])
67 67 article = community.articles.build(params[:article].merge(:last_changed_by => current_person))
68 68 article.type= params[:type].nil? ? 'TinyMceArticle' : params[:type]
69   - article.save
  69 + if !article.save
  70 + render_api_errors!(article.errors.full_messages)
  71 + end
70 72 present article, :with => Entities::Article
71 73 end
72 74  
... ...
lib/api/v1/communities.rb
... ... @@ -16,27 +16,24 @@ module API
16 16 # Example Request:
17 17 # GET /communities?from=2013-04-04-14:41:43&until=2014-04-04-14:41:43&limit=10
18 18 # GET /communities?reference_id=10&limit=10&oldest
19   -# desc 'Articles.', {
20   -# :params => API::Entities::Article.documentation
21   -# }
22 19 get do
23   - conditions = make_conditions_with_parameter(params)
24   -
25   - if params[:reference_id]
26   - communities = environment.communities.send("#{params.key?(:oldest) ? 'older_than' : 'newer_than'}", params[:reference_id]).find(:all, :conditions => conditions, :limit => limit, :order => "created_at DESC")
27   - else
28   - communities = environment.communities.find(:all, :conditions => conditions, :limit => limit, :order => "created_at DESC")
29   - end
  20 + communities = select_filtered_collection_of(current_person, 'communities', params)
30 21 present communities, :with => Entities::Community
31 22 end
32   -
33   - desc "Return the article id"
  23 +
  24 + #FIXME See only public communities
  25 + get '/all' do
  26 + communities = select_filtered_collection_of(environment, 'communities', params)
  27 + present communities, :with => Entities::Community
  28 + end
  29 +
34 30 get ':id' do
35   - present environment.communities.find(params[:id]), :with => Entities::Community
  31 + community = environment.communities.find(params[:id])
  32 + present community, :with => Entities::Community
36 33 end
37 34  
38 35 end
39   -
  36 +
40 37 end
41 38 end
42 39 end
... ...
lib/api/v1/enterprises.rb
... ... @@ -16,17 +16,8 @@ module API
16 16 # Example Request:
17 17 # GET /enterprises?from=2013-04-04-14:41:43&until=2014-04-04-14:41:43&limit=10
18 18 # GET /enterprises?reference_id=10&limit=10&oldest
19   -# desc 'Articles.', {
20   -# :params => API::Entities::Article.documentation
21   -# }
22 19 get do
23   - conditions = make_conditions_with_parameter(params)
24   -
25   - if params[:reference_id]
26   - enterprises = environment.enterprises.send("#{params.key?(:oldest) ? 'older_than' : 'newer_than'}", params[:reference_id]).find(:all, :conditions => conditions, :limit => limit, :order => "created_at DESC")
27   - else
28   - enterprises = environment.enterprises.find(:all, :conditions => conditions, :limit => limit, :order => "created_at DESC")
29   - end
  20 + enterprises = select_filtered_collection_of(environment, 'enterprises', params)
30 21 present enterprises, :with => Entities::Enterprise
31 22 end
32 23  
... ...
lib/api/v1/people.rb
... ... @@ -16,48 +16,14 @@ module API
16 16 # Example Request:
17 17 # GET /people?from=2013-04-04-14:41:43&until=2014-04-04-14:41:43&limit=10
18 18 # GET /people?reference_id=10&limit=10&oldest
19   -# desc 'Articles.', {
20   -# :params => API::Entities::Article.documentation
21   -# }
22 19 get do
23   - conditions = make_conditions_with_parameter(params)
24   -
25   - if params[:reference_id]
26   - people = environment.people.send("#{params.key?(:oldest) ? 'older_than' : 'newer_than'}", params[:reference_id]).find(:all, :conditions => conditions, :limit => limit, :order => "created_at DESC")
27   - else
28   - people = environment.people.find(:all, :conditions => conditions, :limit => limit, :order => "created_at DESC")
29   - end
  20 + people = select_filtered_collection_of(environment, 'people', params)
30 21 present people, :with => Entities::Person
31 22 end
32   -
33 23  
34   - segment '/:person_id' do
35   -
36   - desc "Return the person information"
37   - get do
38   - present environment.people.find(params[:person_id]), :with => Entities::Person
39   - end
40   -
41   - resource '/communities' do
42   - desc "Return all communities of person"
43   - get do
44   - person = environment.people.find(params[:person_id])
45   - conditions = make_conditions_with_parameter(params)
46   -
47   - if params[:reference_id]
48   - communities = person.communities.send("#{params.key?(:oldest) ? 'older_than' : 'newer_than'}", params[:reference_id]).find(:all, :conditions => conditions, :limit => limit, :order => "created_at DESC")
49   - else
50   - communities = person.communities.find(:all, :conditions => conditions, :limit => limit, :order => "created_at DESC")
51   - end
52   - present communities, :with => Entities::Community
53   - end
54   -
55   - desc "Return all communities of person"
56   - get '/:id' do
57   - person = environment.people.find(params[:person_id])
58   - present person.communities.find(params[:id]), :with => Entities::Community
59   - end
60   - end
  24 + desc "Return the person information"
  25 + get '/:id' do
  26 + present environment.people.find(params[:id]), :with => Entities::Person
61 27 end
62 28  
63 29 end
... ...