Files
fission-src/examples/ruby/events_to_slack.rb
T
S. Brent FaulknerandSoam Vasani a8e7ec534b Add Ruby environment (#223)
Adds a Ruby environment and examples.
2017-06-17 10:48:05 -07:00

34 lines
1.0 KiB
Ruby

# frozen_string_literal: true
require 'net/http'
require 'uri'
require 'json'
SLACK_BASE_URL = 'https://hooks.slack.com/'
SLACK_WEBHOOK_PATH = 'YOUR RELATIVE PATH HERE' # Something like "/services/XXX/YYY/zZz123"
def send_slack_message(message)
uri = URI.join(SLACK_BASE_URL, SLACK_WEBHOOK_PATH)
data = "{'channel': '#hackdays-serverless', 'username': 'fissionbot', 'text': \"#{message}\", 'icon_emoji': ':fission:'}"
res = Net::HTTP.post_form(uri, payload: data)
res.success?
end
def handler(context)
request = context.request
event_type = request.headers['X-Kubernetes-Event-Type']
object_type = request.headers['X-Kubernetes-Object-Type']
object = JSON.parse(request.body.read)
object_name = object.dig('metadata', 'name')
object_namespace = object.dig('metadata', 'namespace')
message = "#{event_type} #{object_type} #{object_namespace}/#{object_name}"
if send_slack_message(message)
"Slack message sent - #{message}"
else
Rack::Response.new(["Failed to send Slack message - #{message}"], 500).finish
end
end