Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Migrate Mailgun to use the webhook component (#17464)
* Switch mailgun to use webhook api * Generalize webhook_config_entry_flow * Add tests for webhook_config_entry_flow * Add tests for mailgun * Remove old mailgun file from .coveragerc * Refactor WebhookFlowHandler into config_entry_flow * Remove test of helper func from IFTTT * Lint
- Loading branch information
1 parent
277a9a3
commit d5a5695
Showing
13 changed files
with
289 additions
and
122 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
{ | ||
"config": { | ||
"title": "Mailgun", | ||
"step": { | ||
"user": { | ||
"title": "Set up the Mailgun Webhook", | ||
"description": "Are you sure you want to set up Mailgun?" | ||
} | ||
}, | ||
"abort": { | ||
"one_instance_allowed": "Only a single instance is necessary.", | ||
"not_internet_accessible": "Your Home Assistant instance needs to be accessible from the internet to receive Mailgun messages." | ||
}, | ||
"create_entry": { | ||
"default": "To send events to Home Assistant, you will need to setup [Webhooks with Mailgun]({mailgun_url}).\n\nFill in the following info:\n\n- URL: `{webhook_url}`\n- Method: POST\n- Content Type: application/x-www-form-urlencoded\n\nSee [the documentation]({docs_url}) on how to configure automations to handle incoming data." | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
""" | ||
Support for Mailgun. | ||
For more details about this component, please refer to the documentation at | ||
https://home-assistant.io/components/mailgun/ | ||
""" | ||
|
||
import voluptuous as vol | ||
|
||
import homeassistant.helpers.config_validation as cv | ||
from homeassistant.const import CONF_API_KEY, CONF_DOMAIN, CONF_WEBHOOK_ID | ||
from homeassistant.helpers import config_entry_flow | ||
|
||
DOMAIN = 'mailgun' | ||
API_PATH = '/api/{}'.format(DOMAIN) | ||
DEPENDENCIES = ['webhook'] | ||
MESSAGE_RECEIVED = '{}_message_received'.format(DOMAIN) | ||
CONF_SANDBOX = 'sandbox' | ||
DEFAULT_SANDBOX = False | ||
|
||
CONFIG_SCHEMA = vol.Schema({ | ||
vol.Optional(DOMAIN): vol.Schema({ | ||
vol.Required(CONF_API_KEY): cv.string, | ||
vol.Required(CONF_DOMAIN): cv.string, | ||
vol.Optional(CONF_SANDBOX, default=DEFAULT_SANDBOX): cv.boolean, | ||
vol.Optional(CONF_WEBHOOK_ID): cv.string, | ||
}), | ||
}, extra=vol.ALLOW_EXTRA) | ||
|
||
|
||
async def async_setup(hass, config): | ||
"""Set up the Mailgun component.""" | ||
if DOMAIN not in config: | ||
return True | ||
|
||
hass.data[DOMAIN] = config[DOMAIN] | ||
return True | ||
|
||
|
||
async def handle_webhook(hass, webhook_id, request): | ||
"""Handle incoming webhook with Mailgun inbound messages.""" | ||
data = dict(await request.post()) | ||
data['webhook_id'] = webhook_id | ||
hass.bus.async_fire(MESSAGE_RECEIVED, data) | ||
|
||
|
||
async def async_setup_entry(hass, entry): | ||
"""Configure based on config entry.""" | ||
hass.components.webhook.async_register( | ||
entry.data[CONF_WEBHOOK_ID], handle_webhook) | ||
return True | ||
|
||
|
||
async def async_unload_entry(hass, entry): | ||
"""Unload a config entry.""" | ||
hass.components.webhook.async_unregister(entry.data[CONF_WEBHOOK_ID]) | ||
return True | ||
|
||
config_entry_flow.register_webhook_flow( | ||
DOMAIN, | ||
'Mailgun Webhook', | ||
{ | ||
'mailgun_url': | ||
'https://www.mailgun.com/blog/a-guide-to-using-mailguns-webhooks', | ||
'docs_url': 'https://www.home-assistant.io/components/mailgun/' | ||
} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
{ | ||
"config": { | ||
"title": "Mailgun", | ||
"step": { | ||
"user": { | ||
"title": "Set up the Mailgun Webhook", | ||
"description": "Are you sure you want to set up Mailgun?" | ||
} | ||
}, | ||
"abort": { | ||
"one_instance_allowed": "Only a single instance is necessary.", | ||
"not_internet_accessible": "Your Home Assistant instance needs to be accessible from the internet to receive Mailgun messages." | ||
}, | ||
"create_entry": { | ||
"default": "To send events to Home Assistant, you will need to setup [Webhooks with Mailgun]({mailgun_url}).\n\nFill in the following info:\n\n- URL: `{webhook_url}`\n- Method: POST\n- Content Type: application/x-www-form-urlencoded\n\nSee [the documentation]({docs_url}) on how to configure automations to handle incoming data." | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
"""Tests for the Mailgun component.""" |
Oops, something went wrong.