asciinema.org/app/controllers/api/asciicasts_controller.rb

54 lines
1.2 KiB
Ruby

module Api
class AsciicastsController < BaseController
before_filter :ensure_authenticated!, only: :create
respond_to :html, only: [:show]
attr_reader :asciicast
def create
asciicast = asciicast_creator.create(asciicast_attributes)
render text: asciicast_url(asciicast), status: :created,
location: asciicast
rescue ActiveRecord::RecordInvalid => e
render text: e.record.errors.messages, status: 422
rescue AsciicastParams::FormatError => e
render text: e.message, status: 400
end
def show
@asciicast = Asciicast.find_by_id_or_secret_token!(params[:id])
respond_with(asciicast) do |format|
format.html do
allow_iframe_requests
render locals: {
page: BareAsciicastPagePresenter.build(asciicast, params)
}, layout: 'bare'
end
format.json do
render json: asciicast, v0: params[:v0]
end
end
end
private
def asciicast_attributes
AsciicastParams.build(params[:asciicast], current_user, request.user_agent)
end
def asciicast_creator
AsciicastCreator.new
end
def allow_iframe_requests
response.headers.delete('X-Frame-Options')
end
end
end