class Dradis::Plugins::MappingService
Attributes
Public Class Methods
Source
# File lib/dradis/plugins/mapping_service.rb, line 6 def initialize(destination: nil, integration:) @destination = destination @integration = integration @component = @integration.meta[:name].to_s @sample_dir = default_sample_dir end
Public Instance Methods
Source
# File lib/dradis/plugins/mapping_service.rb, line 13 def apply_mapping(data:, source:, mapping_fields: nil) @source = source return unless valid_source? field_processor = integration::FieldProcessor.new(data: data) mapping_fields = mapping_fields || get_mapping_fields mapping_fields.map do |field| field_name = field.destination_field field_content = process_content( field.content, field_processor ) "#[#{field_name}]#\n#{field_content}" end&.join("\n\n") end
Private Instance Methods
Source
# File lib/dradis/plugins/mapping_service.rb, line 45 def default_sample_dir @default_sample_dir ||= begin File.join(Configuration.paths_templates_plugins, component) end end
This method returns the default location in which integrations store their sample files
Source
# File lib/dradis/plugins/mapping_service.rb, line 51 def get_mapping_fields # returns the mapping fields for the found mapping, # or the default mapping_fields integration.mapping_fields( source: source, destination: destination ) end
Source
# File lib/dradis/plugins/mapping_service.rb, line 60 def process_content(content, field_processor) content.gsub(/{{\s?#{component}\[(\S*?)\]\s?}}/) do |field| name = field.split(/\[|\]/)[1] if integration.source_fields(source).include?(name) field_processor.value(field: name) else "Field [#{field}] not recognized by the integration" end end end
Source
# File lib/dradis/plugins/mapping_service.rb, line 72 def valid_source? @source = source if integration.mapping_sources.include?(source.to_sym) end