X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=vendor%2Frails%2Factionpack%2Flib%2Faction_controller%2Frewindable_input.rb;fp=vendor%2Frails%2Factionpack%2Flib%2Faction_controller%2Frewindable_input.rb;h=cedfb7fd75e64c1d7ca46f6bd0d3675b511e94e2;hb=437aa336c44c74a30aeea16a06743c32747ed661;hp=0000000000000000000000000000000000000000;hpb=97a0772b06264134cfe38e7494f9427efe0840a0;p=feedcatcher.git

diff --git a/vendor/rails/actionpack/lib/action_controller/rewindable_input.rb b/vendor/rails/actionpack/lib/action_controller/rewindable_input.rb
new file mode 100644
index 0000000..cedfb7f
--- /dev/null
+++ b/vendor/rails/actionpack/lib/action_controller/rewindable_input.rb
@@ -0,0 +1,28 @@
+module ActionController
+  class RewindableInput
+    class RewindableIO < ActiveSupport::BasicObject
+      def initialize(io)
+        @io = io
+        @rewindable = io.is_a?(::StringIO)
+      end
+
+      def method_missing(method, *args, &block)
+        unless @rewindable
+          @io = ::StringIO.new(@io.read)
+          @rewindable = true
+        end
+
+        @io.__send__(method, *args, &block)
+      end
+    end
+
+    def initialize(app)
+      @app = app
+    end
+
+    def call(env)
+      env['rack.input'] = RewindableIO.new(env['rack.input'])
+      @app.call(env)
+    end
+  end
+end