Class: Nfcom::Utils::Compressor
- Inherits:
-
Object
- Object
- Nfcom::Utils::Compressor
- Defined in:
- lib/nfcom/utils/compressor.rb
Overview
Compressor/Decompressor para XML de NFCom
Responsável por compactar e descompactar XMLs usando GZIP com nível máximo de compressão, conforme exigido pela SEFAZ.
Class Method Summary collapse
-
.gzip_base64(xml) ⇒ String
Compacta XML e retorna Base64.
-
.ungzip_base64(base64_data) ⇒ String
Descompacta Base64+GZIP e retorna XML.
Class Method Details
.gzip_base64(xml) ⇒ String
Compacta XML e retorna Base64
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/nfcom/utils/compressor.rb', line 18 def self.gzip_base64(xml) xml = xml.dup xml.sub!("\uFEFF", '') # remove BOM se existir io = StringIO.new # Nível 9 = compressão máxima (FORCE_GZIP do PHP) gz = Zlib::GzipWriter.new(io, Zlib::BEST_COMPRESSION) gz.write(xml) gz.close Base64.strict_encode64(io.string) end |
.ungzip_base64(base64_data) ⇒ String
Descompacta Base64+GZIP e retorna XML
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/nfcom/utils/compressor.rb', line 35 def self.ungzip_base64(base64_data) compressed_data = Base64.strict_decode64(base64_data) io = StringIO.new(compressed_data) gz = Zlib::GzipReader.new(io) xml = gz.read gz.close xml end |