You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
asciinema.org/app/controllers/api/comments_controller.rb

47 lines
1.1 KiB
Ruby

class Api::CommentsController < ApplicationController
respond_to :json
before_filter :ensure_authenticated!, :only => [:create, :destroy]
before_filter :load_asciicast, :only => [:index, :create]
def index
respond_with CommentDecorator.decorate(@asciicast.comments)
end
def create
comment = Comment.new(params[:comment])
comment.asciicast = @asciicast
comment.user = current_user
if comment.save
notify_via_email(@asciicast.user, comment)
end
decorated_comment = CommentDecorator.new(comment)
location = comment.persisted? ? api_comment_url(comment) : nil
respond_with decorated_comment, :location => location
end
def destroy
comment = Comment.find(params[:id])
if comment.user == current_user
respond_with comment.destroy
else
raise Forbidden
end
end
private
def load_asciicast
@asciicast = Asciicast.find(params[:asciicast_id])
end
def notify_via_email(user, comment)
if user && user.email.present? && user != comment.user
UserMailer.new_comment_email(user, comment).deliver
end
end
end