comments.rb 1.47 KB
module API
  module V1
    class Comments < Grape::API
  
      before { detect_stuff_by_domain }
      before { authenticate! }
   
      resource :articles do
        # Collect comments from articles
        #
        # Parameters:
        #   reference_id     - comment id used as reference to collect comment
        #   oldest           - Collect the oldest comments from reference_id comment. If nothing is passed the newest comments are collected
        #   limit            - amount of comments returned. The default value is 20
        #
        # Example Request:
        #  GET /articles/12/comments?oldest&limit=10&reference_id=23
        get ":id/comments" do
          conditions = {}
          conditions = ["id #{params.key?(:oldest) ? '<' : '>'} ?", params[:reference_id]] if params[:reference_id]
          present environment.articles.find(params[:id]).comments.find(:all, :conditions => conditions, :limit => limit), :with => Entities::Comment
        end
   
        get ":id/comments/:comment_id" do
          present environment.articles.find(params[:id]).comments.find(params[:comment_id]), :with => Entities::Comment
        end
   
        # Example Request:
        #  POST api/v1/articles/12/comments?private_toke=234298743290432&body=new comment
        post ":id/comments" do
          present environment.articles.find(params[:id]).comments.create(:author => current_user, :body => params[:body]), :with => Entities::Comment
        end
      end
   
    end
  end
end