Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions services/Freshservice
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
module AppOptics::Services
class Service::Freshservice < AppOptics::Services::Service
def receive_validate(errors)
success = true
[:service_key, :event_type, :description].each do |k|
if settings[k].to_s.empty?
errors[k] = "Is required"
success = false
end
end
success
end

def receive_alert_clear
receive_alert
end

def account_email
if payload['auth']
payload['auth']['email']
end
end

def receive_alert
raise_config_error unless receive_validate({})

fs_payload = {}
['alert', 'trigger_time', 'conditions', 'violations'].each do |whitelisted|
fs_payload[whitelisted] = payload[whitelisted]
end
if email = account_email
fs_payload['account'] = email
end
alert_name = payload['alert']['name']
description = alert_name.blank? ? settings[:description] : alert_name
if payload[:triggered_by_user_test]
description = "[Test] " + description
end
body = {
:service_key => settings[:service_key],
:event_type => settings[:event_type],
:description => description,
:details => fs_payload
}

body[:event_type] = payload[:clear] ? "resolve" : "trigger"

if payload[:triggered_by_user_test]
body[:details][:note] = test_alert_message()
end
if payload[:alert][:version] == 1
body[:details][:metric_url] = payload_link(payload)
end
body[:details][:alert_url] = alert_link(payload)
unless payload['alert']['runbook_url'].blank?
body[:details][:runbook_url] = payload['alert']['runbook_url']
end

unless payload['alert']['description'].blank?
body[:details][:description] = payload['alert']['description']
end

keys = [settings[:incident_key], payload[:incident_key]].compact
if keys.size > 0
body[:incident_key] = keys.join("-")
end

url = "https://geekfactory.alerts.freshservice.com/integrations/3684/alerts?auth-key=eyJhbGciOiJIUzI1NiJ9.eyJhX2lkIjo2Nzc3LCJhcF9pZCI6NTE3OSwic19pZCI6NSwidHMiOjE2NDQyNDE1NTIuNTAwNjM0NH0.-4oCpz2DCGfxuJCV3P4Dawfadp67luO7FJ_eFMjUft4"

http_post url, body, 'Content-Type' => 'application/json'
end
end
end