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