Sha256: b1975872d633941ecf70840349d66bc956a7fec9621eaaf45bae2b78ad80be96

Contents?: true

Size: 753 Bytes

Versions: 7

Compression:

Stored size: 753 Bytes

Contents

require 'rest-core/middleware'

class RestCore::DefaultPayload
  def self.members; [:payload]; end
  include RestCore::Middleware

  def initialize *args
    super
    @payload ||= {}
  end

  def call env, &k
    defaults = merge(@payload, payload(env))

    app.call(env.merge(REQUEST_PAYLOAD =>
      merge(defaults, env[REQUEST_PAYLOAD])), &k)
  end

  # this method is intended to merge payloads if they are non-empty hashes,
  # but prefer the right most one if they are not hashes.
  def merge lhs, rhs
    if rhs.respond_to?(:empty?) && rhs.empty?
      lhs
    elsif lhs.respond_to?(:merge)
      if rhs.respond_to?(:merge)
        string_keys(lhs).merge(string_keys(rhs))
      else
        rhs
      end
    else
      rhs
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rest-core-3.2.0 lib/rest-core/middleware/default_payload.rb
rest-core-3.1.1 lib/rest-core/middleware/default_payload.rb
rest-core-3.1.0 lib/rest-core/middleware/default_payload.rb
rest-core-3.0.0 lib/rest-core/middleware/default_payload.rb
rest-core-2.1.2 lib/rest-core/middleware/default_payload.rb
rest-core-2.1.1 lib/rest-core/middleware/default_payload.rb
rest-core-2.1.0 lib/rest-core/middleware/default_payload.rb