File: //proc/self/root/usr/lib/python2.7/site-packages/salt/modules/ifttt.py
# -*- coding: utf-8 -*-
'''
Support for IFTTT
.. versionadded:: 2015.8.0
Requires an ``api_key`` in ``/etc/salt/minion``:
.. code-block:: yaml
ifttt:
secret_key: '280d4699-a817-4719-ba6f-ca56e573e44f'
'''
# Import python libs
from __future__ import absolute_import, print_function, unicode_literals
import logging
import time
# Import salt libs
import salt.utils.http
import salt.utils.json
log = logging.getLogger(__name__)
def __virtual__():
'''
Only load the module if apache is installed
'''
if not __salt__['config.get']('ifttt.secret_key') and \
not __salt__['config.get']('ifttt:secret_key'):
return (False, 'IFTTT Secret Key Unavailable, not loading.')
return True
def _query(event=None,
method='GET',
args=None,
header_dict=None,
data=None):
'''
Make a web call to IFTTT.
'''
secret_key = __salt__['config.get']('ifttt.secret_key') or \
__salt__['config.get']('ifttt:secret_key')
path = 'https://maker.ifttt.com/trigger/{0}/with/key/{1}'.format(event, secret_key)
if header_dict is None:
header_dict = {'Content-type': 'application/json'}
if method != 'POST':
header_dict['Accept'] = 'application/json'
result = salt.utils.http.query(
path,
method,
params={},
data=data,
header_dict=header_dict,
decode=True,
decode_type='auto',
text=True,
status=True,
cookies=True,
persist_session=True,
opts=__opts__,
backend='requests'
)
return result
def trigger_event(event=None, **kwargs):
'''
Trigger a configured event in IFTTT.
:param event: The name of the event to trigger.
:return: A dictionary with status, text, and error if result was failure.
'''
res = {'result': False, 'message': 'Something went wrong'}
data = {}
for value in ('value1', 'value2', 'value3',
'Value1', 'Value2', 'Value3'):
if value in kwargs:
data[value.lower()] = kwargs[value]
data['occurredat'] = time.strftime("%B %d, %Y %I:%M%p", time.localtime())
result = _query(event=event,
method='POST',
data=salt.utils.json.dumps(data)
)
if 'status' in result:
if result['status'] == 200:
res['result'] = True
res['message'] = result['text']
else:
if 'error' in result:
res['message'] = result['error']
return res