module UrlTracker

Constants

VERSION

Public Instance Methods

list_all() click to toggle source

Returns an array with all URIs currently being tracked

# File lib/url_tracker.rb, line 31
def list_all
  init_ivars
  uri_list = @pages.map { |page| page.uri }

  uri_list.empty? ? ',' : uri_list.join(',')
end
release_uri(uri) click to toggle source

Stops tracking given URI

# File lib/url_tracker.rb, line 39
def release_uri(uri)
  init_ivars

  p = Page.new(URI(uri))
  if @pages.include?(p)
    @pages.delete(p)
    @scheduler.remove_task(uri)
    'ok'
  else
    'error'
  end
end
restart() click to toggle source

Forget about current tracked URIs

# File lib/url_tracker.rb, line 53
def restart
  init_ivars
  @pages.clear
  @scheduler.restart
end
track_uri(uri, time = 5*60) click to toggle source

Tracks url fetching its content every time seconds (defaults to 5*60 - 5 minutes).

# File lib/url_tracker.rb, line 17
def track_uri(uri, time = 5*60)
  init_ivars

  p = Page.new(URI(uri))
  
  if @pages.add?(p)
    @scheduler.task(uri).every(:minute) { check_change(p) }
    'ok'
  else
    'error'
  end
end

Private Instance Methods

check_change(page) click to toggle source
# File lib/url_tracker.rb, line 61
def check_change(page)
  Notifier.notify(title: 'Change!', message: "Page #{page.uri} changed!") if page.changed?
end
init_ivars() click to toggle source
# File lib/url_tracker.rb, line 65
def init_ivars
  @pages      ||= Set.new
  @scheduler  ||= Periodic.new
end