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