Module: Gitlab::Utils::Gzip
- Included in:
- Diff::HighlightCache, DiscussionsDiff::HighlightCache
- Defined in:
- lib/gitlab/utils/gzip.rb
Instance Method Summary collapse
Instance Method Details
#gzip_compress(data) ⇒ Object
6 7 8 9 10 11 12 13 14 |
# File 'lib/gitlab/utils/gzip.rb', line 6 def gzip_compress(data) # .compress returns ASCII-8BIT, so we need to force the encoding to # UTF-8 before caching it in redis, else we risk encoding mismatch # errors. # ActiveSupport::Gzip.compress(data).force_encoding("UTF-8") rescue Zlib::GzipFile::Error data end |
#gzip_decompress(data) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/gitlab/utils/gzip.rb', line 16 def gzip_decompress(data) # Since we could be dealing with an already populated cache full of data # that isn't gzipped, we want to also check to see if the data is # gzipped before we attempt to .decompress it, thus we check the first # 2 bytes for "\x1F\x8B" to confirm it is a gzipped string. While a # non-gzipped string will raise a Zlib::GzipFile::Error, which we're # rescuing, we don't want to count on rescue for control flow. # data[0..1] == "\x1F\x8B" ? ActiveSupport::Gzip.decompress(data) : data rescue Zlib::GzipFile::Error data end |