from __future__ import print_function
import json
import urllib
import urllib2

print('Loading function')

slack_webhook_url = [INSERT_WEBHOOK_URL]


def send_event_to_slack(message):
    req = urllib2.Request(slack_webhook_url,
                          headers={"Content-Type": "application/json",
                                   "Accept": "*/*"},
                          data=json.dumps(message))
    try:
        response = urllib2.urlopen(req)
        print(response.read())
    except urllib2.URLError, e:
        print('Failed')
        print(e.reason)


def lambda_handler(event, context):
    message = json.loads(event['Records'][0]['Sns']['Message'])
    print("JSON: " + json.dumps(message))
    print("Type: " + message["packet_type"])
    if message["packet_type"] == "alarm":
        alarm_title = "New USM Anywhere Alarm"

        fields = []
        fields.append(
            {"title": "Intent", "value": message.get('rule_intent', 'Empty')})
        fields.append(
            {"title": "Strategy", "value": message.get('rule_strategy', 'Empty')})
        fields.append(
            {"title": "Method", "value": message.get('rule_method', 'Empty')})

    elif message["packet_type"] == "log":
        alarm_title = "New USM Anywhere Event"
        fields = [{"title": "Event Name", "value": message["event_name"]}]
    else:
        return message

    alert = {"attachments": [{
        "color": "#36a64f",
        "title": alarm_title,
        "fields": fields,
        "footer": "Alienvault USM Anywhere"}]}

    send_event_to_slack(alert)

    return message
