cartodb/app/controllers/carto/api/states_controller.rb
2020-06-15 10:58:47 +08:00

41 lines
1.1 KiB
Ruby

module Carto
module Api
class StatesController < ::Api::ApplicationController
include Carto::ControllerHelper
ssl_required :update
before_filter :load_visualization,
:check_writer, only: :update
rescue_from LoadError,
UnauthorizedError,
UnprocesableEntityError, with: :rescue_from_carto_error
def update
@visualization.state.json = params[:json]
@visualization.state.save!
render json: StatePresenter.new(@visualization.state).to_hash
rescue ActiveRecord::RecordInvalid
message = @visualization.errors.full_messages.join(', ')
raise UnprocesableEntityError.new(message)
end
private
def load_visualization
@visualization = Visualization.find(params[:visualization_id])
rescue ActiveRecord::RecordNotFound
raise LoadError.new('Visualization not found')
end
def check_writer
unless @visualization.writable_by?(current_viewer)
raise UnauthorizedError.new
end
end
end
end
end