Module: Webmachine::Resource::Encodings

Included in:
Webmachine::Resource
Defined in:
lib/webmachine/resource/encodings.rb

Overview

This module implements standard Content-Encodings that you might want to use in your Webmachine::Resource. To use one, simply return it in the hash from Callbacks#encodings_provided.

Instance Method Summary collapse

Instance Method Details

#encode_deflate(data) ⇒ Object

The ‘deflate’ encoding, which uses libz’s DEFLATE compression.



16
17
18
19
# File 'lib/webmachine/resource/encodings.rb', line 16

def encode_deflate(data)
  # The deflate options were borrowed from Rack and Mongrel1.
  Zlib::Deflate.deflate(data, Zlib::DEFAULT_COMPRESSION, -Zlib::MAX_WBITS, Zlib::DEF_MEM_LEVEL, Zlib::DEFAULT_STRATEGY)
end

#encode_gzip(data) ⇒ Object

Note:

Because of the header/checksum requirements, gzip cannot be used on streamed responses.

The ‘gzip’ encoding, which uses GNU Zip (via libz).



24
25
26
27
28
# File 'lib/webmachine/resource/encodings.rb', line 24

def encode_gzip(data)
  ''.tap do |out|
    Zlib::GzipWriter.wrap(StringIO.new(out)) { |gz| gz << data }
  end
end

#encode_identity(data) ⇒ Object

The ‘identity’ encoding, which does no compression.



11
12
13
# File 'lib/webmachine/resource/encodings.rb', line 11

def encode_identity(data)
  data
end