Class: Clickwrap::EventDocument
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Clickwrap::EventDocument
- Defined in:
- lib/clickwrap/models/event_document.rb
Overview
The exact document version bound to one statement in one event, with the digests as they stood at capture.
The digests are copied here rather than only referenced, so that verification can detect a document version row that was edited in place instead of trusting the current value of a column it is supposed to be checking.
Instance Method Summary collapse
- #canonical_fragment ⇒ Object
-
#still_matches_stored_version? ⇒ Boolean
True when the stored document version still carries the digest this event recorded.
- #to_s ⇒ Object
Instance Method Details
#canonical_fragment ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/clickwrap/models/event_document.rb', line 45 def canonical_fragment { "statement" => statement_key, "key" => document_key, "version" => version_label, "locale" => locale, "source_media_type" => source_media_type, "source_digest" => source_content_digest, "rendered_media_type" => rendered_media_type, "rendered_digest" => rendered_content_digest, "renderer" => { "name" => renderer_name, "version" => renderer_version, "sanitizer_name" => sanitizer_name, "sanitizer_version" => sanitizer_version }.compact.presence, "ordinal" => ordinal }.compact end |
#still_matches_stored_version? ⇒ Boolean
True when the stored document version still carries the digest this event recorded. A false says the document row changed after capture — which is a finding, not a crash, so verification reports it with a stable error rather than raising into an export.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/clickwrap/models/event_document.rb', line 30 def still_matches_stored_version? return false if document_version.nil? Digest.secure_compare?(document_version.content_digest, source_content_digest) && Digest.secure_compare?( document_version.rendered_content_digest.presence || document_version.content_digest, rendered_content_digest ) && document_version.media_type == source_media_type && (document_version.rendered_media_type.presence || document_version.media_type) == rendered_media_type && document_version.renderer_name.to_s == renderer_name.to_s && document_version.renderer_version.to_s == renderer_version.to_s && document_version.sanitizer_name.to_s == sanitizer_name.to_s && document_version.sanitizer_version.to_s == sanitizer_version.to_s end |
#to_s ⇒ Object
65 |
# File 'lib/clickwrap/models/event_document.rb', line 65 def to_s = "#{document_key} #{version_label} (#{locale})" |