Sha256: d8dcaae196ca288f82159a28f2e9507bdfb003f2cab3e3e52c472cead07f5459

Contents?: true

Size: 1.6 KB

Versions: 1

Compression:

Stored size: 1.6 KB

Contents

require 'json'
class Rails::ExtJS::Direct::RemotingProvider
    def initialize(app, rpath)
        @app = app
        @router_path = rpath
        @logger = RAILS_DEFAULT_LOGGER
        @params = {}
    end

    def call(env)
        @logger.info('---------------- PARAMS ---------------------')
        #@logger.info(env.to_yaml)


        @logger.info(env["action_controller.request.request_parameters"].to_yaml)


        if env["PATH_INFO"].match("^"+@router_path)
            parse_params(env)

            @logger.info('env: ' + env.to_yaml)

            output = []
            ["company", "users"].each do |c|
                env["PATH_INFO"] = "/#{c}/load"
                env["REQUEST_URI"] = "/#{c}/load"
                status, headers, response = @app.call(env)
                output << response.body
                @logger.info('---------------------- RESPONSE ----------------------------')
                @logger.info(response.body)
            end
            res = output.join(',')
            res = "[" + res + "]" if output.length > 1

            #status, headers, response = @app.call(env)
            [200, {"Content-Type" => "text/html"}, res]

        else
            @app.call(env)
        end
    end

    def parse_params(env)
        @params = env["REQUEST_METHOD"] == "GET" ? CGI.parse(env["QUERY_STRING"]) : env["rack.request.form_hash"]
        #@params.each do |k,v|
        #    @params[k] = @params[k].first
        #end
        #@params["data"] = JSON.parse(@params["data"]) if @params["data"]
        #@logger.info('params: ' + @params.to_yaml)
        #env["QUERY_STRING"] = {}

    end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails-extjs-direct-0.0.2 lib/rails-extjs-direct/rack/remoting_provider.rb