mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Add mastodon (#13441)
* Add mastodon * Move login * Revert "Move login" This reverts commit 2c8446f62950f91c0ebfc0b4825e87421ac653fc.
This commit is contained in:
parent
12affa1469
commit
7b3d17bae4
@ -507,6 +507,7 @@ omit =
|
||||
homeassistant/components/notify/kodi.py
|
||||
homeassistant/components/notify/lannouncer.py
|
||||
homeassistant/components/notify/llamalab_automate.py
|
||||
homeassistant/components/notify/mastodon.py
|
||||
homeassistant/components/notify/matrix.py
|
||||
homeassistant/components/notify/message_bird.py
|
||||
homeassistant/components/notify/mycroft.py
|
||||
@ -522,8 +523,8 @@ omit =
|
||||
homeassistant/components/notify/sendgrid.py
|
||||
homeassistant/components/notify/simplepush.py
|
||||
homeassistant/components/notify/slack.py
|
||||
homeassistant/components/notify/stride.py
|
||||
homeassistant/components/notify/smtp.py
|
||||
homeassistant/components/notify/stride.py
|
||||
homeassistant/components/notify/synology_chat.py
|
||||
homeassistant/components/notify/syslog.py
|
||||
homeassistant/components/notify/telegram.py
|
||||
|
70
homeassistant/components/notify/mastodon.py
Normal file
70
homeassistant/components/notify/mastodon.py
Normal file
@ -0,0 +1,70 @@
|
||||
"""
|
||||
Mastodon platform for notify component.
|
||||
|
||||
For more details about this platform, please refer to the documentation at
|
||||
https://home-assistant.io/components/notify.mastodon/
|
||||
"""
|
||||
import logging
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.notify import (
|
||||
PLATFORM_SCHEMA, BaseNotificationService)
|
||||
from homeassistant.const import CONF_ACCESS_TOKEN
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
REQUIREMENTS = ['Mastodon.py==1.2.2']
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
CONF_BASE_URL = 'base_url'
|
||||
CONF_CLIENT_ID = 'client_id'
|
||||
CONF_CLIENT_SECRET = 'client_secret'
|
||||
|
||||
DEFAULT_URL = 'https://mastodon.social'
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.Required(CONF_ACCESS_TOKEN): cv.string,
|
||||
vol.Required(CONF_CLIENT_ID): cv.string,
|
||||
vol.Required(CONF_CLIENT_SECRET): cv.string,
|
||||
vol.Optional(CONF_BASE_URL, default=DEFAULT_URL): cv.string,
|
||||
})
|
||||
|
||||
|
||||
def get_service(hass, config, discovery_info=None):
|
||||
"""Get the Mastodon notification service."""
|
||||
from mastodon import Mastodon
|
||||
from mastodon.Mastodon import MastodonUnauthorizedError
|
||||
|
||||
client_id = config.get(CONF_CLIENT_ID)
|
||||
client_secret = config.get(CONF_CLIENT_SECRET)
|
||||
access_token = config.get(CONF_ACCESS_TOKEN)
|
||||
base_url = config.get(CONF_BASE_URL)
|
||||
|
||||
try:
|
||||
mastodon = Mastodon(
|
||||
client_id=client_id, client_secret=client_secret,
|
||||
access_token=access_token, api_base_url=base_url)
|
||||
mastodon.account_verify_credentials()
|
||||
except MastodonUnauthorizedError:
|
||||
_LOGGER.warning("Authentication failed")
|
||||
return None
|
||||
|
||||
return MastodonNotificationService(mastodon)
|
||||
|
||||
|
||||
class MastodonNotificationService(BaseNotificationService):
|
||||
"""Implement the notification service for Mastodon."""
|
||||
|
||||
def __init__(self, api):
|
||||
"""Initialize the service."""
|
||||
self._api = api
|
||||
|
||||
def send_message(self, message="", **kwargs):
|
||||
"""Send a message to a user."""
|
||||
from mastodon.Mastodon import MastodonAPIError
|
||||
|
||||
try:
|
||||
self._api.toot(message)
|
||||
except MastodonAPIError:
|
||||
_LOGGER.error("Unable to send message")
|
@ -24,6 +24,9 @@ DoorBirdPy==0.1.3
|
||||
# homeassistant.components.homekit
|
||||
HAP-python==1.1.7
|
||||
|
||||
# homeassistant.components.notify.mastodon
|
||||
Mastodon.py==1.2.2
|
||||
|
||||
# homeassistant.components.isy994
|
||||
PyISY==1.1.0
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user