class Restforce::Middleware::Gzip

Middleware to uncompress GZIP compressed responses from Salesforce.

Constants

ACCEPT_ENCODING_HEADER
CONTENT_ENCODING_HEADER
ENCODING

Public Instance Methods

call(env) click to toggle source
# File lib/restforce/middleware/gzip.rb, line 13
def call(env)
  env[:request_headers][ACCEPT_ENCODING_HEADER] = ENCODING if @options[:compress]
  @app.call(env).on_complete do |environment|
    on_complete(environment)
  end
end
decompress(body) click to toggle source

Internal: Decompresses a gzipped string.

# File lib/restforce/middleware/gzip.rb, line 30
def decompress(body)
  Zlib::GzipReader.new(StringIO.new(body)).read
rescue Zlib::GzipFile::Error
  # We thought the response was gzipped, but it wasn't. Return the original
  # body back to the caller. See https://github.com/restforce/restforce/issues/761.
  body
end
gzipped?(env) click to toggle source

Internal: Returns true if the response is gzipped.

# File lib/restforce/middleware/gzip.rb, line 25
def gzipped?(env)
  env[:response_headers][CONTENT_ENCODING_HEADER] == ENCODING
end
on_complete(env) click to toggle source
# File lib/restforce/middleware/gzip.rb, line 20
def on_complete(env)
  env[:body] = decompress(env[:body]) if gzipped?(env)
end