class Rets::Metadata::Caching

Metadata caching. @api internal

Attributes

cache[R]
serializer[R]

Public Class Methods

make(options) click to toggle source

Given the options passed to Client#initialize, make an instance. Options:

  • :metadata_cache - Persistence mechanism. Defaults to NullCache.

  • “metadata_serializer - Serialization mechanism. Defaults to MarshalSerializer.

# File lib/rets/metadata/caching.rb, line 16
def self.make(options)
  cache = options.fetch(:metadata_cache) { Metadata::NullCache.new }
  serializer = options.fetch(:metadata_serializer) do
    Metadata::MarshalSerializer.new
  end
  new(cache, serializer)
end
new(cache, serializer) click to toggle source

The cache is responsible for reading and writing the serialized metadata. The cache should quack like a Rets::Metadata::FileCache.

The serializer is responsible for serializing/deserializing the metadata. The serializer should quack like a Rets::Metadata::MarshalSerializer.

# File lib/rets/metadata/caching.rb, line 34
def initialize(cache, serializer)
  @cache = cache
  @serializer = serializer
end

Public Instance Methods

load(logger) click to toggle source

Load metadata. Returns a Metadata::Root if successful, or nil if it could be loaded for any reason.

# File lib/rets/metadata/caching.rb, line 41
def load(logger)
  sources = @cache.load do |file|
    @serializer.load(file)
  end
  return nil unless sources.is_a?(Hash)
  Metadata::Root.new(logger, sources)
end
save(metadata) click to toggle source

Save metadata.

# File lib/rets/metadata/caching.rb, line 50
def save(metadata)
  @cache.save do |file|
    @serializer.save(file, metadata.sources)
  end
end