committed by
JackDandy
7 changed files with 254 additions and 3 deletions
After Width: | Height: | Size: 15 KiB |
@ -0,0 +1,90 @@ |
|||
# coding=utf-8 |
|||
# |
|||
# This file is part of SickGear. |
|||
# |
|||
# Thanks to: mallen86 |
|||
# |
|||
# SickGear is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU General Public License as published by |
|||
# the Free Software Foundation, either version 3 of the License, or |
|||
# (at your option) any later version. |
|||
# |
|||
# SickGear is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License |
|||
# along with SickGear. If not, see <http://www.gnu.org/licenses/>. |
|||
|
|||
import json |
|||
import sickbeard |
|||
|
|||
from sickbeard import logger, common |
|||
|
|||
class SlackNotifier: |
|||
|
|||
def _send_to_slack(self, message, accessToken, channel, as_user, bot_name, icon_url): |
|||
SLACK_ENDPOINT = "https://slack.com/api/chat.postMessage" |
|||
|
|||
data = {} |
|||
data["token"] = accessToken |
|||
data["channel"] = channel |
|||
data["username"] = bot_name |
|||
data["text"] = message |
|||
data["icon_url"] = icon_url |
|||
data["as_user"] = as_user |
|||
|
|||
urlResp = sickbeard.helpers.getURL(url=SLACK_ENDPOINT, post_data=data) |
|||
if urlResp: |
|||
resp = json.loads(urlResp) |
|||
else: |
|||
return False |
|||
|
|||
# if ("error" in resp): |
|||
# raise Exception(resp["error"]) |
|||
|
|||
if (resp["ok"] == True): |
|||
logger.log(u"Slack: Succeeded sending message.", logger.MESSAGE) |
|||
return True |
|||
|
|||
logger.log(u"Slack: Failed sending message: " + resp["error"], logger.ERROR) |
|||
return False |
|||
|
|||
def _notify(self, message, accessToken='', channel='', as_user='', bot_name='', icon_url='', force=False): |
|||
# suppress notifications if the notifier is disabled but the notify options are checked |
|||
if not sickbeard.USE_SLACK and not force: |
|||
return False |
|||
|
|||
if not accessToken: |
|||
accessToken = sickbeard.SLACK_ACCESS_TOKEN |
|||
if not channel: |
|||
channel = sickbeard.SLACK_CHANNEL |
|||
if not as_user: |
|||
as_user = sickbeard.SLACK_AS_USER |
|||
if not bot_name: |
|||
bot_name = sickbeard.SLACK_BOT_NAME |
|||
if not icon_url: |
|||
icon_url = sickbeard.SLACK_ICON_URL |
|||
|
|||
return self._send_to_slack(message, accessToken, channel, as_user, bot_name, icon_url) |
|||
|
|||
############################################################################## |
|||
# Public functions |
|||
############################################################################## |
|||
|
|||
def notify_snatch(self, ep_name): |
|||
if sickbeard.SLACK_NOTIFY_ONSNATCH: |
|||
self._notify(common.notifyStrings[common.NOTIFY_SNATCH] + ': ' + ep_name) |
|||
|
|||
def notify_download(self, ep_name): |
|||
if sickbeard.SLACK_NOTIFY_ONDOWNLOAD: |
|||
self._notify(common.notifyStrings[common.NOTIFY_DOWNLOAD] + ': ' + ep_name) |
|||
|
|||
def test_notify(self, accessToken, channel, as_user, bot_name, icon_url): |
|||
return self._notify("This is a test notification from SickGear", accessToken, channel, as_user, bot_name, icon_url, force=True) |
|||
|
|||
def update_library(self, ep_obj): |
|||
pass |
|||
|
|||
notifier = SlackNotifier |
Loading…
Reference in new issue