Sha256: 216600bbfd1270a1d8b5a01f04592efe78fa68438a7dd5274cd82274ac58a0e9

Contents?: true

Size: 844 Bytes

Versions: 2

Compression:

Stored size: 844 Bytes

Contents

require 'forwardable'

module Rack
  module Congestion
    class Request
      extend Forwardable
      attr_accessor :env, :key, :options

      def_delegators :rack_request,
        :ip, :path, :content_type, :session, :scheme,
        :ssl?, :delete?, :get?, :head?, :options?, :link?,
        :patch?, :post?, :put?, :trace?, :unlink?, :cookies, :xhr?

      def_delegators :congestion,
        :allowed?, :backoff, :first_request, :last_request,
        :rejected?, :too_frequent?, :too_many?, :total_requests

      def initialize(env, key, options = { })
        self.env = env
        self.key = key
        self.options = options
      end

      def rack_request
        @rack_request ||= Rack::Request.new env
      end

      def congestion
        @congestion ||= ::Congestion.request key.call, options
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rack-congestion-0.0.3 lib/rack/congestion/request.rb
rack-congestion-0.0.2 lib/rack/congestion/request.rb