Class: Dcc::Inspect::Report
- Inherits:
-
Lutaml::Model::Serializable
- Object
- Lutaml::Model::Serializable
- Dcc::Inspect::Report
- Defined in:
- lib/dcc/inspect/report.rb
Overview
Dcc::Inspect::Report summarizes a parsed DCC: counts, key
identifiers, signature presence, and a human-readable to_s /
to_json / to_yaml.
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.call(dcc) ⇒ Dcc::Inspect::Report
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/dcc/inspect/report.rb', line 58 def call(dcc) admin = admin_data(dcc) mr_list = measurement_results(dcc) new( schema_version: dcc.schema_version.to_s, unique_identifier: core_data(dcc)&.unique_identifier, country_code: core_data(dcc)&.country_code_iso_3166_1.to_s, item_count: items(dcc).size, measurement_result_count: mr_list.size, quantity_count: count_quantities(mr_list), list_count: count_lists(mr_list), embedded_file_count: ::Dcc::Extract::File.each(dcc).size, languages: lang_codes(dcc), signer_count: resp_persons(dcc).size, has_signature: signature_present?(dcc), ) end |
Instance Method Details
#to_json(*_args) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/dcc/inspect/report.rb', line 41 def to_json(*_args) require "json" payload = {} self.class.attributes.each_key { |k| payload[k] = public_send(k) } ::JSON.pretty_generate(payload) end |
#to_s ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/dcc/inspect/report.rb', line 23 def to_s lines = [] lines << "DCC Inspection Report" lines << "=" * 50 lines << "Schema version: #{schema_version}" lines << "Unique identifier: #{unique_identifier}" lines << "Country: #{country_code}" lines << "Languages: #{languages.join(', ')}" if languages.any? lines << "Items: #{item_count}" lines << "Measurement results: #{measurement_result_count}" lines << "Quantities: #{quantity_count}" lines << "Lists: #{list_count}" lines << "Embedded files: #{}" lines << "Signers: #{signer_count}" lines << "Has signature: #{has_signature ? 'yes' : 'no'}" lines.join("\n") end |
#to_yaml(*_args) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/dcc/inspect/report.rb', line 48 def to_yaml(*_args) require "yaml" payload = {} self.class.attributes.each_key { |k| payload[k] = public_send(k) } payload.to_yaml end |