Class: RailsWayback::HistoricalAssetBody

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

Constant Summary collapse

DEFAULT_CHUNK_SIZE =
64 * 1024

Instance Method Summary collapse

Constructor Details

#initialize(sha:, public_path:, view_source: RailsWayback::ViewSource.new, resolver: RailsWayback::HistoricalAssetResolver.new, chunk_size: DEFAULT_CHUNK_SIZE) ⇒ HistoricalAssetBody

Returns a new instance of HistoricalAssetBody.



7
8
9
10
11
12
13
14
15
# File 'lib/rails_wayback/historical_asset_body.rb', line 7

def initialize(sha:, public_path:, view_source: RailsWayback::ViewSource.new,
               resolver: RailsWayback::HistoricalAssetResolver.new,
               chunk_size: DEFAULT_CHUNK_SIZE)
  @sha = sha
  @public_path = public_path
  @view_source = view_source
  @resolver = resolver
  @chunk_size = chunk_size
end

Instance Method Details

#close ⇒ Object



35
# File 'lib/rails_wayback/historical_asset_body.rb', line 35

def close; end

#each ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rails_wayback/historical_asset_body.rb', line 17

def each
  return enum_for(:each) unless block_given?

  view_source.with_materialization(sha) do |root|
    resolution = resolver.resolve_public_path(root: root, public_path: public_path)
    unless resolution
      raise RailsWayback::MaterializationError,
            "Historical public asset #{public_path.inspect} is no longer available for #{sha}"
    end

    File.open(resolution.path, "rb") do |file|
      while (chunk = file.read(chunk_size))
        yield chunk
      end
    end
  end
end