Sha256: a25a03f8a0474ba3895e40a751429192b0468f542183e306e29e8e359886b87e
Contents?: true
Size: 1.93 KB
Versions: 2
Compression:
Stored size: 1.93 KB
Contents
module Extr class Transaction include ActiveModel::Validations validates :action, presence: true validates :method, presence: true validates :tid, presence: true, numericality: {greater_than: 0} attr_reader :request, :action, :method, :data, :tid, :upload def initialize(request, action, method, tid, data, upload) @request = request @action = action @method = method @data = data @tid = tid @upload = upload end def uploadable? @upload ? true : false end def response invoke_controller_method end private def invoke_controller_method ext = { type: 'rpc', tid: self.tid, action: self.action, method: self.method, result: "" } begin controller_klass = Config.controller_path[self.action].constantize unless controller_klass.mimes_for_respond_to.key?(Mime::JSON.symbol) raise "For supporting the rails way define at least respond_to :json in that controller: #{controller_klass}" end unless self.request.form_data? ext_params = HashWithIndifferentAccess.new ext_params[:data] = self.data self.request.env["action_dispatch.request.parameters"] = ext_params end self.request.env["REQUEST_PATH"] = controller_klass.controller_path self.request.env["PATH_INFO"] = controller_klass.controller_path self.request.env["REQUEST_URI"] = controller_klass.controller_path self.request.env["HTTP_ORIGIN"] = controller_klass.controller_path self.request.env["ORIGINAL_FULLPATH"] = controller_klass.controller_path body = controller_klass.action(self.method).call(self.request.env).to_a.last.body ext['result'] = body.empty? ? "" : ActiveSupport::JSON.decode(body) rescue => e if Rails.env.development? Rails.logger.error ext['type'] = 'exception' Rails.logger.error ext['message'] = e.message Rails.logger.error ext['where'] = e.backtrace.join("\n") end ensure return ext end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
extr-1.0.6 | lib/extr/transaction.rb |
extr-1.0.5 | lib/extr/transaction.rb |