Class: SentinelApi::Notifier

Inherits:
Object
  • Object
show all
Defined in:
lib/sentinel_api/notifier.rb

Class Method Summary collapse

Class Method Details

.configurationObject



63
64
65
# File 'lib/sentinel_api/notifier.rb', line 63

def configuration
  SentinelApi.configuration
end

.error(*args) ⇒ Object



15
16
17
# File 'lib/sentinel_api/notifier.rb', line 15

def error(*args)
  log('ERROR', args)
end

.extract_arguments(args) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/sentinel_api/notifier.rb', line 29

def extract_arguments(args)
  message = nil
  exception = nil
  tags = nil
  if args.count == 1 && args[0].is_a?(Hash)
    result = args[0].with_indifferent_access
    return [result[:message], result[:info], result[:tags]]
  elsif args.count == 1 && args[0].is_a?(Exception)
    return [args[0].message, prepare_info(args[0]), []]
  else
    args.each do |arg|
      if arg.is_a?(String)
        message = arg
      elsif arg.is_a?(Exception)
        exception = arg
      elsif RUBY_PLATFORM == 'java' && arg.is_a?(java.lang.Exception)
        exception = arg
      elsif arg.is_a?(Array)
        tags = arg

        tags = nil if tags.empty?
      end
    end
  end

  [message, prepare_info(exception), tags]
end

.info(*args) ⇒ Object



11
12
13
# File 'lib/sentinel_api/notifier.rb', line 11

def info(*args)
  log('INFO', args)
end

.log(level = nil, args) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/sentinel_api/notifier.rb', line 21

def log(level = nil, args)
  level ||= configuration.level
  project_name ||= configuration.project_name
  message, info, tags = extract_arguments(args)

  SentinelApi::Client.send_to_server({ level: level, message: message, info: info, tags: tags, project_name: project_name })
end

.prepare_info(exception) ⇒ Object



57
58
59
60
61
# File 'lib/sentinel_api/notifier.rb', line 57

def prepare_info(exception)
  "#{exception.class}: #{exception.message}, \n#{exception.backtrace.join("\n")}"
rescue
  "#{exception.class}: #{exception.message}"
end

.warn(*args) ⇒ Object



7
8
9
# File 'lib/sentinel_api/notifier.rb', line 7

def warn(*args)
  log('WARN', args)
end