Class: FAIRChampionHarvester::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/cache.rb

Class Method Summary collapse

Class Method Details

.checkCache(uri, headers) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/cache.rb', line 32

def self.checkCache(uri, headers)
  filename = Digest::MD5.hexdigest uri + headers.to_s
  warn "Checking Error cache for #{filename}"
  if File.exist?("/tmp/#{filename}_error")
    warn "Error file found in cache... returning"
    return ["ERROR", nil, [uri]]
  end
  if File.exist?("/tmp/#{filename}_head") and File.exist?("/tmp/#{filename}_body")
    warn "FOUND data in cache"
    head = Marshal.load(File.read("/tmp/#{filename}_head"))
    body = Marshal.load(File.read("/tmp/#{filename}_body"))
    finalURI = [uri]
    finalURI = Marshal.load(File.read("/tmp/#{filename}_uri")) if File.exist?("/tmp/#{filename}_uri")
    warn "Returning...."
    return [head, body, finalURI]
  end
  warn "Not Found in Cache"
end

.checkRDFCache(body) ⇒ Object

CACHE FUNCTIONS ##################### #####################################



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/cache.rb', line 7

def self.checkRDFCache(body)
  g = RDF::Graph.new
  key = Digest::MD5.hexdigest body
  graph_file = "/tmp/#{key}_graph"
  body_file  = "/tmp/#{key}_graphbody"

  return g unless File.exist?(graph_file) && File.exist?(body_file)

  warn "RDF Cache File #{key} FOUND"
  graph = Marshal.load(File.read(graph_file))
  graph.each { |statement| g << statement }
  warn "returning a graph of #{g.size}"
  g
end

.writeErrorToCache(uri, headers) ⇒ Object



62
63
64
65
66
# File 'lib/cache.rb', line 62

def self.writeErrorToCache(uri, headers)
  filename = Digest::MD5.hexdigest uri + headers.to_s
  warn "in writeErrorToCache Writing error to cache for #{filename}"
  File.binwrite("/tmp/#{filename}_error", "ERROR")
end

.writeRDFCache(reader, body) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/cache.rb', line 22

def self.writeRDFCache(reader, body)
  filename = Digest::MD5.hexdigest body
  graph = RDF::Graph.new
  reader.each_statement { |s| graph << s }
  warn "WRITING RDF TO CACHE #{filename}"
  File.binwrite("/tmp/#{filename}_graph", Marshal.dump(graph))
  File.binwrite("/tmp/#{filename}_graphbody", body)
  warn "wrote RDF filename: #{filename}"
end

.writeToCache(uri, headers, head, body, finalURI) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# File 'lib/cache.rb', line 51

def self.writeToCache(uri, headers, head, body, finalURI)
  filename = Digest::MD5.hexdigest uri + headers.to_s
  warn "in writeToCache Writing to cache for #{filename}"
  headfilename = filename + "_head"
  bodyfilename = filename + "_body"
  urifilename = filename + "_uri"
  File.binwrite("/tmp/#{headfilename}", Marshal.dump(head))
  File.binwrite("/tmp/#{bodyfilename}", Marshal.dump(body))
  File.binwrite("/tmp/#{urifilename}", Marshal.dump(finalURI))
end