8000 Merge pull request #21 from twilio/monitor · bcorwin/twilio-python@248f18f · GitHub
[go: up one dir, main page]

Skip to content

Commit 248f18f

Browse files
committed
Merge pull request twilio#21 from twilio/monitor
Implement monitor
2 parents d8a83cd + 4b91b2a commit 248f18f

File tree

12 files changed

+379
-0
lines changed

12 files changed

+379
-0
lines changed

tests/monitor/__init__.py

Whitespace-only changes.

tests/monitor/test_alerts.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import unittest
2+
3+
from mock import patch
4+
5+
from tests.tools import create_mock_json
6+
from twilio.rest.resources.monitor.alerts import Alerts
7+
8+
9+
AUTH = ("AC123", "token")
10+
BASE_URI = "https://monitor.twilio.com/v1"
11+
EVENT_SID = "NOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
12+
13+
14+
class AlertTest(unittest.TestCase):
15+
@patch('twilio.rest.resources.base.make_twilio_request')
16+
def test_get(self, request):
17+
resp = create_mock_json('tests/resources/monitor/alerts_instance.json')
18+
resp.status_code = 200
19+
request.return_value = resp
20+
21+
uri = "{0}/Alerts/{1}".format(BASE_URI, EVENT_SID)
22+
list_resource = Alerts(BASE_URI, AUTH)
23+
list_resource.get(EVENT_SID)
24+
request.assert_called_with("GET", uri, auth=AUTH, use_json_extension=False)
25+
26+
@patch('twilio.rest.resources.base.make_twilio_request')
27+
def test_list(self, request):
28+
resp = create_mock_json('tests/resources/monitor/alerts_list.json')
29+
resp.status_code = 200
30+
request.return_value = resp
31+
32+
uri = "{0}/Alerts".format(BASE_URI)
33+
list_resource = Alerts(BASE_URI, AUTH)
34+
list_resource.list()
35+
request.assert_called_with("GET", uri, params={}, auth=AUTH, use_json_extension=False)

tests/monitor/test_client.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from mock import patch
2+
3+
from tests.tools import create_mock_json
4+
from twilio.rest.monitor import TwilioMonitorClient
5+
6+
7+
@patch("twilio.rest.resources.base.make_twilio_request")
8+
def test_events(mock):
9+
client = TwilioMonitorClient("ACCOUNT_SID", "AUTH_TOKEN")
10+
resp = create_mock_json("tests/resources/monitor/events_instance.json")
11+
mock.return_value = resp
12+
client.events.get("AEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
13+
uri = "https://monitor.twilio.com/v1/Events/AEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
14+
mock.assert_called_with("GET", uri, auth=("ACCOUNT_SID", "AUTH_TOKEN"), use_json_extension=False)

tests/monitor/test_events.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import unittest
2+
3+
from mock import patch
4+
5+
from tests.tools import create_mock_json
6+
from twilio.rest.resources.monitor.events import Events
7+
8+
9+
AUTH = ("AC123", "token")
10+
BASE_URI = "https://monitor.twilio.com/v1"
11+
EVENT_SID = "AEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
12+
13+
14+
class EventTest(unittest.TestCase):
15+
@patch('twilio.rest.resources.base.make_twilio_request')
16+
def test_get(self, request):
17+
resp = create_mock_json('tests/resources/monitor/events_instance.json')
18+
resp.status_code = 200
19+
request.return_value = resp
20+
21+
uri = "{0}/Events/{1}".format(BASE_URI, EVENT_SID)
22+
list_resource = Events(BASE_URI, AUTH)
23+
list_resource.get(EVENT_SID)
24+
request.assert_called_with("GET", uri, auth=AUTH, use_json_extension=False)
25+
26+
@patch('twilio.rest.resources.base.make_twilio_request')
27+
def test_list(self, request):
28+
resp = create_mock_json('tests/resources/monitor/events_list.json')
29+
resp.status_code = 200
30+
request.return_value = resp
31+
32+
uri = "{0}/Events".format(BASE_URI)
33+
list_resource = Events(BASE_URI, AUTH)
34+
list_resource.list()
35+
request.assert_called_with("GET", uri, params={}, auth=AUTH, use_json_extension=False)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"url": "https://monitor.twilio.com/v1/Alerts/NO70839f875fe15a2c74612eee1c02d2f3",
3+
"response_body": "",
4+
"alert_text": "LogLevel=ERROR&sourceComponent=12000&Msg&httpResponse=404&ErrorCode=11200&url=https%3A%2F%2F674d331e.ngrok.com%2Fdie",
5+
"more_info": "https://www.twilio.com/docs/errors/11200",
6+
"error_code": "11200",
7+
"log_level": "error",
8+
"resource_sid": "CA6f58741ed5bc70b2476902a8e9e628cc",
9+
"account_sid": "AC70839f875fe15a2c74612eee1c02d2f3",
10+
"sid": "NO6f58741ed5bc73fc74612eee1c02d2f3",
11+
"request_method": "GET",
12+
"request_url": "https://674d331e.ngrok.com/die",
13+
"request_variables": "AccountSid=AC70839f875fe15a2c74612eee1c02d2f3&ToZip=94111&FromState=CA&Called=%2B14154187474&FromCountry=US&CallerCountry=US&CalledZip=94111&Direction=inbound",
14+
"response_headers": "Date=Tue%2C+17+Mar+2015+22%3A40%3A19+GMT&Content-Length=36&Server=nginx%2F1.6.2",
15+
"date_created": "2015-03-17T22:40:19Z",
16+
"api_version": "2008-08-01",
17+
"date_updated": "2015-03-17T22:40:21Z",
18+
"date_generated": "2015-03-17T22:40:19Z"
19+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"meta": {
3+
"key": "alerts",
4+
"end": 1,
5+
"first_page_uri": "/v1/Alerts?PageSize=2&Page=0",
6+
"next_page_uri": "/v1/Alerts?PageSize=2&Page=1&PageToken=PANO7bd5bf2efbdf0500dc321b3a772e9229",
7+
"page": 0,
8+
"page_size": 2,
9+
"previous_page_uri": null,
10+
"start": 0,
11+
"uri": "/v1/Alerts?PageSize=2&Page=0"
12+
},
13+
"alerts": [
14+
{
15+
"uri": "https://monitor.twilio.com/v1/Alerts/NOf9a8decd348f123d17b716658e7b3932",
16+
"date_generated": "2015-03-02T20:33:18Z",
17+
"date_updated": "2015-03-02T20:33:18Z",
18+
"api_version": null,
19+
"date_created": "2015-03-02T20:33:18Z",
20+
"request_url": null,
21+
"sid": "NOf9a8decd348f123d17b716658e7b3932",
22+
"account_sid": "AC23d17b716658e7b326b77cdb692b437e",
23+
"call_sid": null,
24+
"log_level": "notice",
25+
"error_code": null,
26+
"more_info": null,
27+
"alert_text": "The balance of test@example.com's Account fell below $10.00 and according to the auto-recharge settings, we charged the payment method ...",
28+
"request_method": null
29+
},
30+
{
31+
"uri": "https://monitor.twilio.com/v1/Alerts/NO7bd5bf2efbdf0500dc321b3a772e9229",
32+
"date_generated": "2015-03-02T20:33:18Z",
33+
"date_updated": "2015-03-02T20:33:18Z",
34+
"api_version": null,
35+
"date_created": "2015-03-02T20:33:18Z",
36+
"request_url": null,
37+
"sid": "NO7bd5bf2efbdf0500dc321b3a772e9229",
38+
"account_sid": "AC23d17b716658e7b326b77cdb692b437e",
39+
"call_sid": null,
40+
"log_level": "notice",
41+
"error_code": null,
42+
"more_info": null,
43+
"alert_text": "The balance of test@example.com's Account fell below $10.00 and according to the auto-recharge settings, we charged the payment method ...",
44+
"request_method": null
45+
}
46+
]
47+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"account_sid": "ACbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3+
"actor_sid": "ACbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
4+
"actor_type": "account",
5+
"description": null,
6+
"event_date": "2014-10-03T16:48:25Z",
7+
"event_type": "account.updated",
8+
"resource_sid": "AC384c618f68e746e62d8ccfe591239e62",
9+
"resource_type": "account",
10+
"sid": "AE9ef65da5ad5243fd8336334cf98721ea",
11+
"source": "api",
12+
"source_ip_address": "10.86.6.250",
13+
"event_data": {
14+
"friendly_name": {
15+
"previous": "SubAccount Created at 2014-10-03 09:48 am",
16+
"updated": "Mr. Friendly"
17+
}
18+
},
19+
"links": {
20+
"actor": "https://api.twilio.com/2010-04-01/Accounts/ACbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
21+
"resource": "https://api.twilio.com/2010-04-01/Accounts/AC384c618f68e746e62d8ccfe591239e62"
22+
},
23+
"url": "https://monitor.twilio.com/v1/Events/AE9ef65da5ad5243fd8336334cf98721ea"
24+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"events": [
3+
{
4+
"account_sid": "ACbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
5+
"actor_sid": "ACbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
6+
"actor_type": "account",
7+
"description": null,
8+
"event_date": "2014-10-03T16:48:25Z",
9+
"event_type": "account.updated",
10+
"resource_sid": "AC384c618f68e746e62d8ccfe591239e62",
11+
"resource_type": "account",
12+
"sid": "AE9ef65da5ad5243fd8336334cf98721ea",
13+
"source": "api",
14+
"source_ip_address": "10.86.6.250",
15+
"event_data": {
16+
"friendly_name": {
17+
"previous": "SubAccount Created at 2014-10-03 09:48 am",
18+
"updated": "Mr. Friendly"
19+
}
20+
},
21+
"links": {
22+
"actor": "https://api.twilio.com/2010-04-01/Accounts/ACbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
23+
"resource": "https://api.twilio.com/2010-04-01/Accounts/AC384c618f68e746e62d8ccfe591239e62"
24+
},
25+
"url": "https://monitor.twilio.com/v1/Events/AE9ef65da5ad5243fd8336334cf98721ea"
26+
}
27+
28+
],
29+
"meta": {
30+
"key": "events",
31+
"next_page_url": null,
32+
"url": "https://monitor.twilio.com/v1/Events?PageSize=50&Page=0",
33+
"previous_page_url": null,
34+
"first_page_url": "https://monitor.twilio.com/v1/Events?PageSize=50&Page=0",
35+
"page_size": 50,
36+
"page": 0
37+
}
38+
}

twilio/rest/monitor.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from twilio.rest.base import TwilioClient
2+
from twilio.rest.resources import UNSET_TIMEOUT
3+
from twilio.rest.resources.monitor.alerts import Alerts
4+
from twilio.rest.resources.monitor.events import Events
5+
6+
7+
class TwilioMonitorClient(TwilioClient):
8+
"""
9+
A client for accessing the Twilio Monitor API.
10+
11+
The Twilio Monitor API provides information about events. For more
12+
information, see the
13+
`Monitor API documentation <https://www.twilio.com/docs/XXX>`_.
14+
15+
:param str account: Your Account Sid from `your dashboard
16+
<https://www.twilio.com/user/account>`_
17+
:param str token: Your Auth Token from `your dashboard
18+
<https://www.twilio.com/user/account>`_
19+
:param float timeout: The socket and read timeout for requests to Twilio
20+
"""
21+
22+
def __init__(self, account=None, token=None,
23+
base="https://monitor.twilio.com", version="v1",
24+
timeout=UNSET_TIMEOUT):
25+
26+
super(TwilioMonitorClient, self).__init__(account, token, base,
27+
version, timeout)
28+
29+
self.version_uri = "%s/%s" % (base, version)
30+
self.events = Events(self.version_uri, self.auth, timeout)
31+
self.alerts = Alerts(self.version_uri, self.auth, timeout)

twilio/rest/resources/monitor/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)
0