%PDF- %PDF-
Direktori : /lib/python2.7/site-packages/salt/utils/ |
Current File : //lib/python2.7/site-packages/salt/utils/mattermost.py |
# -*- coding: utf-8 -*- ''' Library for interacting with Mattermost Incoming Webhooks :configuration: This module can be used by specifying the name of a configuration profile in the minion config, minion pillar, or master config. For example: .. code-block:: yaml mattermost: hook: 3tdgo8restnxiykdx88wqtxryr api_url: https://example.com ''' from __future__ import absolute_import, unicode_literals import logging # Import 3rd-party libs # pylint: disable=import-error,no-name-in-module,redefined-builtin from salt.ext.six.moves.urllib.parse import urljoin as _urljoin import salt.ext.six.moves.http_client from salt.version import __version__ # pylint: enable=import-error,no-name-in-module import salt.utils.http from salt.ext import six log = logging.getLogger(__name__) def query(hook=None, api_url=None, data=None): ''' Mattermost object method function to construct and execute on the API URL. :param api_url: The Mattermost API URL :param hook: The Mattermost hook. :param data: The data to be sent for POST method. :return: The json response from the API call or False. ''' method = 'POST' ret = {'message': '', 'res': True} base_url = _urljoin(api_url, '/hooks/') url = _urljoin(base_url, six.text_type(hook)) result = salt.utils.http.query(url, method, data=data, decode=True, status=True) if result.get('status', None) == salt.ext.six.moves.http_client.OK: ret['message'] = 'Message posted {0} correctly'.format(data) return ret elif result.get('status', None) == salt.ext.six.moves.http_client.NO_CONTENT: return True else: log.debug(url) log.debug(data) log.debug(result) if 'dict' in result: _result = result['dict'] if 'error' in _result: ret['message'] = result['error'] ret['res'] = False return ret ret['message'] = 'Message not posted' else: ret['message'] = 'invalid_auth' ret['res'] = False return ret