Class: ErrorReady::SyncSender

Inherits:
Object
  • Object
show all
Includes:
Concurrent::Async
Defined in:
lib/error_ready/notifiers/sync_sender.rb

Instance Method Summary collapse

Constructor Details

#initialize(formatted_error) ⇒ SyncSender

Returns a new instance of SyncSender.



7
8
9
# File 'lib/error_ready/notifiers/sync_sender.rb', line 7

def initialize(formatted_error)
  @error = formatted_error
end

Instance Method Details

#app_secretObject



40
41
42
# File 'lib/error_ready/notifiers/sync_sender.rb', line 40

def app_secret
  ErrorReady.configuration.app_secret
end

#callObject



11
12
13
# File 'lib/error_ready/notifiers/sync_sender.rb', line 11

def call
  handle_response(send_request)
end

#handle_response(response) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/error_ready/notifiers/sync_sender.rb', line 25

def handle_response(response)
  case response
  when Net::HTTPSuccess, Net::HTTPOK
    log_message("error sent to #{uri.hostname}", :green)
  when Net::HTTPUnauthorized
    log_message("unauthorized, ensure you add app_secret on config file")
  when Net::HTTPBadRequest
    log_message("bad request")
  when HTTPServerError
    log_message("server error")
  else
    log_message("something wrong")
  end
end

#log_message(msg, color = :red) ⇒ Object



44
45
46
# File 'lib/error_ready/notifiers/sync_sender.rb', line 44

def log_message(msg, color = :red)
  Rails.logger.debug ActiveSupport::LogSubscriber.new.send(:color, "ErrorReady: #{msg}", color, true)
end

#send_requestObject



15
16
17
18
19
20
21
22
23
# File 'lib/error_ready/notifiers/sync_sender.rb', line 15

def send_request
  http = Net::HTTP.new(uri.hostname, uri.port)
  http.use_ssl = true if uri.port == 443
  req = Net::HTTP::Post.new(uri)
  req["Content-type"] = "application/json"
  req["APP-SECRET"] = app_secret
  req.body = @error.to_json
  http.request(req)
end

#uriObject



48
49
50
# File 'lib/error_ready/notifiers/sync_sender.rb', line 48

def uri
  @uri ||= URI(ErrorReady.configuration.host)
end