Sha256: a63b3d7861a8b26dd796d6867ad38f8eef7c0e69b4817954d358d38e75574209

Contents?: true

Size: 942 Bytes

Versions: 1

Compression:

Stored size: 942 Bytes

Contents

module Alephant
  module Broker
    class CallEnvironment
      include Logger
      attr_reader :settings

      def initialize(env)
        @settings = env
      end

      def method
        @settings['REQUEST_METHOD']
      end

      def post?
        @settings['REQUEST_METHOD'] == 'POST'
      end

      def get?
        @settings['REQUEST_METHOD'] == 'GET'
      end

      def query
        @settings['QUERY_STRING']
      end

      def path
        @settings['PATH_INFO']
      end

      def data
        parse(rack_input) if post?
      end

      private

      def rack_input
          (@settings['rack.input'].read).tap { @settings['rack.input'].rewind } # http://rack.rubyforge.org/doc/SPEC.html
      end

      def parse(json)
        begin
          JSON.parse(json)
        rescue JSON::ParserError => e
          logger.info("Broker.environment#data: ParserError")
          nil
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alephant-broker-0.1.0 lib/alephant/broker/call_environment.rb