Sha256: 60b9be5d5ce31dfbfe4487ecfaeea36983007698353d2ab7f192b3e3973230cd
Contents?: true
Size: 907 Bytes
Versions: 18
Compression:
Stored size: 907 Bytes
Contents
# frozen_string_literal: true require 'zlib' module Frodo # Middleware to uncompress GZIP compressed responses from Salesforce. class Middleware::Gzip < Frodo::Middleware ACCEPT_ENCODING_HEADER = 'Accept-Encoding' CONTENT_ENCODING_HEADER = 'Content-Encoding' ENCODING = 'gzip' 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 def on_complete(env) env[:body] = decompress(env[:body]) if gzipped?(env) end # Internal: Returns true if the response is gzipped. def gzipped?(env) env[:response_headers][CONTENT_ENCODING_HEADER] == ENCODING end # Internal: Decompresses a gzipped string. def decompress(body) Zlib::GzipReader.new(StringIO.new(body)).read end end end
Version data entries
18 entries across 18 versions & 1 rubygems