Sha256: 00453b365d6f999d7bebed1559cc8fed26ca621e0e3e81862a2bfe04eff8fbf2

Contents?: true

Size: 763 Bytes

Versions: 1

Compression:

Stored size: 763 Bytes

Contents

# frozen_string_literal: true

module Wayfarer
  module Middleware
    class Fetch
      include Wayfarer::Middleware::Stage::API

      attr_reader :pool
      attr_accessor :task

      def initialize
        @pool = Wayfarer::Networking::Pool.instance
      end

      def call(task)
        self.task = task

        pool.with do |agent|
          task.metadata.agent = agent

          result = task.job.run_callbacks :fetch do
            agent.fetch(task.url)
          end

          case result
          when Networking::Result::Redirect
            stage(result.redirect_url)
          when Networking::Result::Success
            task.metadata.page = result.page
            yield if block_given?
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wayfarer-0.4.1 lib/wayfarer/middleware/fetch.rb