class Protocol::HTTP::Body::Digestable

Invokes a callback once the body has finished reading.

Public Class Methods

new(body, digest = Digest::SHA256.new, callback = nil) click to toggle source
Calls superclass method
# File lib/protocol/http/body/digestable.rb, line 38
def initialize(body, digest = Digest::SHA256.new, callback = nil)
        super(body)
        
        @digest = digest
        @callback = callback
end
wrap(message, digest = Digest::SHA256.new, &block) click to toggle source
# File lib/protocol/http/body/digestable.rb, line 32
def self.wrap(message, digest = Digest::SHA256.new, &block)
        if body = message&.body and !body.empty?
                message.body = self.new(message.body, digest, block)
        end
end

Public Instance Methods

digest() click to toggle source
# File lib/protocol/http/body/digestable.rb, line 45
def digest
        @digest
end
etag() click to toggle source
# File lib/protocol/http/body/digestable.rb, line 49
def etag
        @digest.hexdigest.dump
end
read() click to toggle source
Calls superclass method
# File lib/protocol/http/body/digestable.rb, line 53
def read
        if chunk = super
                @digest.update(chunk)
                
                return chunk
        else
                @callback&.call(self)
                
                return nil
        end
end