Class: Wayfarer::Middleware::Fetch

Inherits:
Object
  • Object
show all
Includes:
Stage::API
Defined in:
lib/wayfarer/middleware/fetch.rb

Defined Under Namespace

Modules: API

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Stage::API

#stage

Constructor Details

#initializeFetch

Returns a new instance of Fetch.



23
24
25
# File 'lib/wayfarer/middleware/fetch.rb', line 23

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

Instance Attribute Details

#poolObject (readonly)

Returns the value of attribute pool.



20
21
22
# File 'lib/wayfarer/middleware/fetch.rb', line 20

def pool
  @pool
end

#taskObject

Returns the value of attribute task.



21
22
23
# File 'lib/wayfarer/middleware/fetch.rb', line 21

def task
  @task
end

Instance Method Details

#call(task) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/wayfarer/middleware/fetch.rb', line 27

def call(task)
  self.task = task

  pool.with do |context|
    result = task.job.run_callbacks :fetch do
      context.fetch(task.url)
    end

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