module ASF::DocumentUtils

Constants

MAX_AGE

Public Class Methods

check_cache(type, cache_dir: ASF::Config.get(:cache), warn: true) click to toggle source

N.B. must check :cache config each time to allow for test overrides check cache age and get settings

# File lib/whimsy/asf/documents.rb, line 13
def self.check_cache(type, cache_dir: ASF::Config.get(:cache), warn: true)
  file, _ = ASF::SVN.listingNames(type, cache_dir)
  mtime = begin
    File.mtime(file)
  rescue Errno::ENOENT
    0
  end
  age = (Time.now - mtime).to_i
  stale = age > MAX_AGE
  if warn && stale
    Wunderbar.warn "Cache for #{type} is older than #{MAX_AGE} seconds"
    # Wunderbar.warn caller(0, 10).join("\n")
  end
  return [cache_dir, stale, file, age]
end
update_cache(type, env, cache_dir: ASF::Config.get(:cache), storedates: false, force: false) click to toggle source

N.B. must check :cache config each time to allow for test overrides create/update cache file

# File lib/whimsy/asf/documents.rb, line 31
def self.update_cache(type, env, cache_dir: ASF::Config.get(:cache), storedates: false, force: false)
  cache_dir, stale, file, age = check_cache(type, cache_dir: cache_dir, warn: false)
  if stale or force
    require 'whimsy/asf/rack'
    ASF::Auth.decode(env)
    # TODO: Downdate to info
    Wunderbar.warn "Updating listing #{file} #{age} as #{env.user}"
    filerev, svnrev = ASF::SVN.updatelisting(type, env.user, env.password, storedates, cache_dir)
    if filerev && svnrev # it worked
      FileUtils.touch file # last time it was checked
    else
      # raise IOError.new("Failed to fetch iclas.txt: #{svnrev}")
      Wunderbar.warn("User #{env.user}: failed to update #{type}: #{svnrev}")
    end
  end
  cache_dir
end