Class: Twingly::AMQP::Pinger

Inherits:
Object
  • Object
show all
Defined in:
lib/twingly/amqp/pinger.rb

Defined Under Namespace

Classes: NullCache

Instance Method Summary collapse

Constructor Details

#initialize(queue_name:, ping_expiration: nil, url_cache: NullCache, connection: Connection.instance, confirm_publish: false) ⇒ Pinger

Returns a new instance of Pinger.



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/twingly/amqp/pinger.rb', line 4

def initialize(queue_name:, ping_expiration: nil, url_cache: NullCache, connection: Connection.instance, confirm_publish: false)
  @url_cache = url_cache

  @publisher = DefaultExchangePublisher.new(queue_name: queue_name, connection: connection)
  @publisher.configure_publish_options do |options|
    options.expiration = ping_expiration
  end

  @default_ping_options = PingOptions.new
  @confirm_publish = confirm_publish
end

Instance Method Details

#default_ping_options {|@default_ping_options| ... } ⇒ Object



31
32
33
# File 'lib/twingly/amqp/pinger.rb', line 31

def default_ping_options
  yield @default_ping_options
end

#ping(urls, options_hash = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/twingly/amqp/pinger.rb', line 16

def ping(urls, options_hash = {})
  options = PingOptions.new(**options_hash)
  options = @default_ping_options.merge(options)

  options.validate

  Array(urls).each do |url|
    next if cached?(url)
    publish(url, options)
    cache!(url)

    yield url if block_given?
  end
end