from __future__ import print_function
import json
import urllib
import urllib2

print('Loading function')

datadog_url = 'https://app.datadoghq.com/api/v1/events?api_key={}&app_key={}'
api_key = '[INSERT_DATADOG_API_KEY]'
app_key = '[INSERT_DATADOG_APPLICATION_KEY]'

alert_type = "info"
default_priority = "normal"
default_tags = ["environment:test", "security"]
send_payload = True


def send_event_to_datadog(message):
    req = urllib2.Request(datadog_url.format(api_key, app_key),
                          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 USMA Alarm: {} - {} - {}"
        alarm_title = alarm_title.format(message.get('rule_intent', 'Empty'),
                                         message.get('rule_strategy', 'Empty'),
                                         message.get('rule_method', 'Empty'))

    elif message["packet_type"] == "log":
        alarm_title = "New USMA Event: {}".format(message["event_name"])
    else:
        return message
    payload = ''
    if send_payload:
        payload = json.dumps(message, sort_keys=True, indent=4)
    alert = {'title': alarm_title,
             'text': payload,
             'priority': default_priority,
             'tags': default_tags,
             'alert_type': alert_type}

    send_event_to_datadog(alert)

    return message
