Sha256: 507ef53ef0037ac559e546f42f502c79e43fdbf5c8a702f40a381bfb7d49026b

Contents?: true

Size: 1.23 KB

Versions: 125

Compression:

Stored size: 1.23 KB

Contents

module Acfs
  class Request

    # Module containing callback handling for Requests.
    # Current the only callback type is `on_complete`:
    #
    #   request = Request.new 'URL'
    #   request.on_complete { |response| ... }
    #
    module Callbacks

      # Add a new `on_complete` callback for this request.
      #
      # @example Set on_complete.
      #   request.on_complete { |response| print response.body }
      #
      # @param [ Block ] block The callback block to execute.
      #
      # @yield [ Acfs::Response ]
      #
      # @return [ Acfs::Request ] The request itself.
      #
      def on_complete(&block)
        callbacks.insert 0, block if block_given?
        self
      end

      # Return array of all callbacks.
      #
      # @return [ Array<Block> ] All callbacks.
      #
      def callbacks
        @callbacks ||= []
      end

      # Trigger all callback for given response.
      #
      # @return [ Acfs::Request ] The request itself.
      #
      def complete!(response)
        call_callback response, 0
        self
      end

      private
      def call_callback(res, index)
        callbacks[index].call res, proc { |res| call_callback res, index + 1 } if index < callbacks.size
      end
    end
  end
end

Version data entries

125 entries across 125 versions & 1 rubygems

Version Path
acfs-0.42.0 lib/acfs/request/callbacks.rb
acfs-0.41.1 lib/acfs/request/callbacks.rb
acfs-0.41.1.beta1 lib/acfs/request/callbacks.rb
acfs-0.41.0 lib/acfs/request/callbacks.rb
acfs-0.40.1.rc1 lib/acfs/request/callbacks.rb
acfs-0.40.0 lib/acfs/request/callbacks.rb
acfs-0.39.1 lib/acfs/request/callbacks.rb
acfs-0.39.0 lib/acfs/request/callbacks.rb
acfs-1.0.0.dev.1.b305 lib/acfs/request/callbacks.rb
acfs-0.38.0 lib/acfs/request/callbacks.rb
acfs-1.0.0.dev.1.b298 lib/acfs/request/callbacks.rb
acfs-1.0.0.dev.1.b297 lib/acfs/request/callbacks.rb
acfs-0.37.0.1.b295 lib/acfs/request/callbacks.rb
acfs-0.37.0 lib/acfs/request/callbacks.rb
acfs-0.36.0.1.b293 lib/acfs/request/callbacks.rb
acfs-0.36.0 lib/acfs/request/callbacks.rb
acfs-0.35.0.1.b291 lib/acfs/request/callbacks.rb
acfs-0.35.0 lib/acfs/request/callbacks.rb
acfs-0.34.1.1.b289 lib/acfs/request/callbacks.rb
acfs-0.34.1 lib/acfs/request/callbacks.rb