require 'resync' require 'promise' require_relative '../zip' require_relative 'zipped_resource' module Resync class Client module Mixins # A list of resources each of which refers to a zipped bitstream package. module Dump # Makes each resource a {ZippedResource} def resources=(value) super resources.each do |r| next if r.respond_to?(:zip_package) class << r prepend ZippedResource end end end # The {Resync::Client::Zip::ZipPackage}s for each resource, downloaded lazily # @return [Array>] the zip packages for each resource def zip_packages @zip_packages ||= resources.map { |r| promise { r.zip_package } } end end end end class ResourceDump prepend Client::Mixins::Dump # Delegates to {#zip_packages} for interoperation with {DumpIndex#all_zip_packages}. # @return [Enumerator::Lazy] a lazy enumeration of the packages for each # resource def all_zip_packages zip_packages.lazy end end class ChangeDump include Client::Mixins::Dump # A list (downloaded lazily) of the {Resync::Client::Zip::ZipPackage}s for each resource # If a time range parameter is provided, the lists of packages is filtered by +from_time+ # and +until_time+, in non-strict mode (only excluding those lists provably not in the range, # i.e., including packages without +from_time+ or +until_time+). # @param in_range [Range