Class: Rack::SmartCompress::Encoders::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/smart_compress/encoders/base.rb

Direct Known Subclasses

Brotli, Deflate, Gzip, Zstd

Class Method Summary collapse

Class Method Details

.available?Boolean

Returns:

  • (Boolean)


8
9
10
# File 'lib/rack/smart_compress/encoders/base.rb', line 8

def available?
  true
end

.compress(body, level: nil) ⇒ Object

Raises:

  • (NotImplementedError)


12
13
14
# File 'lib/rack/smart_compress/encoders/base.rb', line 12

def compress(body, level: nil)
  raise NotImplementedError, "#{name}.compress must be implemented"
end

.encode_body(body, level: nil) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/rack/smart_compress/encoders/base.rb', line 16

def encode_body(body, level: nil)
  compressed = []
  if body.respond_to?(:each)
    buffer = String.new
    body.each { |chunk| buffer << chunk.to_s }
    compressed << compress(buffer, level: level)
  else
    compressed << compress(body.to_s, level: level)
  end
  compressed
end