Module: NineOneOne

Defined in:
lib/nine_one_one/http.rb,
lib/nine_one_one.rb,
lib/nine_one_one/errors.rb,
lib/nine_one_one/version.rb,
lib/nine_one_one/log_service.rb,
lib/nine_one_one/configuration.rb,
lib/nine_one_one/slack_service.rb,
lib/nine_one_one/pager_duty_service.rb

Overview

a minimal wrapper around Net::HTTP which encapsulates ugly Net::HTTP errors and throws NineOneOne:Errors instead. The implementation is based on Faraday’s Net::HTTP adapter

Defined Under Namespace

Classes: Configuration, ConfigurationError, ConnectionFailedError, Error, Http, HttpError, IncidentReportingError, LogService, NotificationError, PagerDutyService, SSLError, SlackService, TimeoutError

Constant Summary collapse

VERSION =
'0.2.0'.freeze

Class Method Summary collapse

Class Method Details

.configObject



37
38
39
# File 'lib/nine_one_one.rb', line 37

def self.config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



27
28
29
30
31
32
33
34
35
# File 'lib/nine_one_one.rb', line 27

def self.configure
  config = Configuration.new

  yield config

  config.validate

  @config = config
end

.emergency(incident_key, description, details_hash = nil) ⇒ Object



41
42
43
# File 'lib/nine_one_one.rb', line 41

def self.emergency(incident_key, description, details_hash = nil)
  emergency_service.trigger_event(incident_key, description, details_hash)
end

.emergency_serviceObject



10
11
12
13
14
15
16
# File 'lib/nine_one_one.rb', line 10

def self.emergency_service
  if config.send_pagers
    PagerDutyService.new(config.pager_duty_integration_key)
  else
    LogService.new(config.logger)
  end
end

.notification_serviceObject



18
19
20
21
22
23
24
25
# File 'lib/nine_one_one.rb', line 18

def self.notification_service
  if config.slack_enabled
    SlackService.new(config.slack_webhook_url, username: config.slack_username,
                                               channel: config.slack_channel)
  else
    LogService.new(config.logger)
  end
end

.notify(message) ⇒ Object



45
46
47
# File 'lib/nine_one_one.rb', line 45

def self.notify(message)
  notification_service.notify(message)
end