Class: Dassets::Server::Response::Body
- Inherits:
-
Object
- Object
- Dassets::Server::Response::Body
- Defined in:
- lib/dassets/server/response.rb
Constant Summary collapse
- CHUNK_SIZE =
this class borrows from the body range handling in Rack::File and adapts it for use with Dasset’s asset files and their generic string content.
(8*1024).freeze
Instance Attribute Summary collapse
-
#asset_file ⇒ Object
readonly
Returns the value of attribute asset_file.
-
#content_range ⇒ Object
readonly
Returns the value of attribute content_range.
-
#size ⇒ Object
readonly
Returns the value of attribute size.
Instance Method Summary collapse
- #==(other_body) ⇒ Object
- #each ⇒ Object
-
#initialize(env, asset_file) ⇒ Body
constructor
A new instance of Body.
- #inspect ⇒ Object
- #partial? ⇒ Boolean
- #range_begin ⇒ Object
- #range_end ⇒ Object
Constructor Details
#initialize(env, asset_file) ⇒ Body
Returns a new instance of Body.
48 49 50 51 52 |
# File 'lib/dassets/server/response.rb', line 48 def initialize(env, asset_file) @asset_file = asset_file @range, @content_range = get_range_info(env, @asset_file) @size = self.range_end - self.range_begin + 1 end |
Instance Attribute Details
#asset_file ⇒ Object (readonly)
Returns the value of attribute asset_file.
46 47 48 |
# File 'lib/dassets/server/response.rb', line 46 def asset_file @asset_file end |
#content_range ⇒ Object (readonly)
Returns the value of attribute content_range.
46 47 48 |
# File 'lib/dassets/server/response.rb', line 46 def content_range @content_range end |
#size ⇒ Object (readonly)
Returns the value of attribute size.
46 47 48 |
# File 'lib/dassets/server/response.rb', line 46 def size @size end |
Instance Method Details
#==(other_body) ⇒ Object
81 82 83 84 85 |
# File 'lib/dassets/server/response.rb', line 81 def ==(other_body) self.asset_file == other_body.asset_file && self.range_begin == other_body.range_begin && self.range_end == other_body.range_end end |
#each ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/dassets/server/response.rb', line 61 def each StringIO.open(@asset_file.content, "rb") do |io| io.seek(@range.begin) remaining_len = self.size while remaining_len > 0 part = io.read([CHUNK_SIZE, remaining_len].min) break if part.nil? remaining_len -= part.length yield part end end end |
#inspect ⇒ Object
75 76 77 78 79 |
# File 'lib/dassets/server/response.rb', line 75 def inspect "#<#{self.class}:#{'0x0%x' % (self.object_id << 1)} " \ "digest_path=#{self.asset_file.digest_path} " \ "range_begin=#{self.range_begin} range_end=#{self.range_end}>" end |
#partial? ⇒ Boolean
54 55 56 |
# File 'lib/dassets/server/response.rb', line 54 def partial? !@content_range.nil? end |
#range_begin ⇒ Object
58 |
# File 'lib/dassets/server/response.rb', line 58 def range_begin; @range.begin; end |
#range_end ⇒ Object
59 |
# File 'lib/dassets/server/response.rb', line 59 def range_end; @range.end; end |