class Nuntius::Configuration
def add_nuntiable_class(klass)
def add_nuntiable_class(klass) @nuntiable_class_names = [] @nuntiable_classes << klass.to_s unless @nuntiable_classes.include?(klass.to_s) end
def compile_nuntiable_class_names
def compile_nuntiable_class_names names = [] names << "Custom" if allow_custom_events @nuntiable_classes.each do |klass_name| klass = klass_name.constantize names << klass.name names += klass.descendants.map(&:name) end names.sort! end
def compile_nuntiable_class_names!
def compile_nuntiable_class_names! @nuntiable_class_names = compile_nuntiable_class_names end
def default_params(event, record)
def default_params(event, record) @default_params.is_a?(Proc) ? instance_exec(event, record, &@default_params) : @default_params end
def flow_color(template_id)
def flow_color(template_id) @flow_color.is_a?(Proc) ? instance_exec(template_id, &@flow_color) : @flow_color end
def initialize
def initialize set_defaults! @nuntiable_classes = [] @nuntiable_class_names = [] @transports = [] @providers = {} @visible_scope = -> { all } @add_metadata = -> {} @metadata_fields = {} @metadata_humanize = ->(data) { data.inspect } @default_template_scope = ->(_object) { all } @default_params = {} end
def metadata_humanize(metadata)
def metadata_humanize(metadata) @metadata_humanize.is_a?(Proc) ? instance_exec(metadata, &@metadata_humanize) : @metadata_humanize end
def nuntiable_class_names
def nuntiable_class_names return @nuntiable_class_names if @nuntiable_class_names.present? compile_nuntiable_class_names! end
def provider(provider, transport:, priority: 1, timeout: 0, settings: {})
def provider(provider, transport:, priority: 1, timeout: 0, settings: {}) if @transports.include? transport @providers[transport.to_sym] ||= [] @providers[transport.to_sym].push(provider: provider, priority: priority, timeout: timeout, settings: settings) else Nuntius.config.logger.call.warn "provider #{provider} not enabled as transport #{transport} is not enabled" end end
def transport(transport)
def transport(transport) @transports.push(transport) if transport end