class Async::HTTP::Cache::Response

def age

def age
	Async::Clock.now - @generated_at
end

def dup

def dup
	dup = super
	
	dup.body = @body.dup
	dup.headers = @headers.dup
	
	return dup
end

def etag

def etag
	@etag ||= @headers[ETAG]
end

def expired?

def expired?
	if @max_age
		self.age > @max_age
	end
end

def initialize(response, body)

def initialize(response, body)
	@generated_at = Async::Clock.now
	
	super(
		response.version,
		response.status,
		response.headers.flatten,
		body,
		response.protocol
	)
	
	@max_age = @headers[CACHE_CONTROL]&.max_age
	@etag = nil
	
	@headers.set(X_CACHE, "hit")
end