8000 Merge branch 'master' into remote-get-cert · bradddd/twilio-python@efd64fc · GitHub
[go: up one dir, main page]

Skip to content

Commit efd64fc

Browse files
authored
Merge branch 'master' into remote-get-cert
2 parents d8a842a + da7a6b2 commit efd64fc

File tree

18 files changed

+245
-10
lines changed

18 files changed

+245
-10
lines changed

CHANGES.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ twilio-python Changelog
33

44
Here you can see the full list of changes between each twilio-python release.
55

6-
[2017-08-07] Version 6.6.0
6+
[2017-08-18] Version 6.6.0
77
---------------------------
88
- Add connection pooling. This is enabled by default and will use one Session for all requests
99
in Client.
@@ -19,6 +19,20 @@ client = Client(
1919
)
2020
```
2121

22+
[2017-08-10] Version 6.5.1
23+
---------------------------
24+
Fixed PyJWT >= 1.5.1 exception
25+
26+
27+
**Api**
28+
- Add New wireless usage keys added
29+
- Add `auto_correct_address` param for Addresses create and update
30+
- Add ChatGrant grant and deprecate IpMessagingGrant
31+
32+
**Video**
33+
- Add `video_codec` enum and `video_codecs` parameter, which can be set to either `VP8` or `H264` during room creation.
34+
- Restrict recordings page size to 100
35+
2236
[2017-07-27] Version 6.5.0
2337
---------------------------
2438
This release adds Beta and Preview products to main artifact.

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
install_requires = [
2626
"six",
2727
"pytz",
28-
"PyJWT >= 1.4.2, <1.5.1",
28+
"PyJWT >= 1.4.2",
2929
],
3030
extras_require={
3131
':python_version<"3.0"': [

tests/unit/jwt/test_access_token.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
VoiceGrant,
1212
VideoGrant,
1313
ConversationsGrant,
14-
TaskRouterGrant
14+
TaskRouterGrant,
15+
ChatGrant
1516
)
1617

1718
ACCOUNT_SID = 'AC123'
@@ -121,6 +122,20 @@ def test_ip_messaging_grant(self):
121122
'push_credential_sid': 'CR123'
122123
}, decoded_token.payload['grants']['ip_messaging'])
123124

125+
def test_chat_grant(self):
126+
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
127+
scat.add_grant(ChatGrant(service_sid='IS123', push_credential_sid='CR123'))
128+
129+
token = scat.to_jwt()
130+
assert_is_not_none(token)
131+
decoded_token = AccessToken.from_jwt(token, 'secret')
132+
self._validate_claims(decoded_token.payload)
133+
assert_equal(1, len(decoded_token.payload['grants']))
134+
assert_equal({
135+
'service_sid': 'IS123',
136+
'push_credential_sid': 'CR123'
137+
}, decoded_token.payload['grants']['chat'])
138+
124139
def test_sync_grant(self):
125140
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
126141
scat.identity = "bender"

twilio/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11

2-
__version_info__ = ('6', '5', '0')
2+
__version_info__ = ('6', '5', '1')
33
__version__ = '.'.join(__version_info__)

twilio/jwt/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ def from_jwt(cls, jwt, key=''):
134134
verify = True if key else False
135135

136136
try:
137-
payload = jwt_lib.decode(bytes(jwt), key, verify=verify, options={
138-
'verify_signature': True,
137+
payload = jwt_lib.decode(bytes(jwt), key, options={
138+
'verify_signature': verify,
139139
'verify_exp': True,
140140
'verify_nbf': True,
141141
})

twilio/jwt/access_token/grants.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,38 @@ def new_func(*args, **kwargs):
1818
return new_func
1919

2020

21+
class ChatGrant(AccessTokenGrant):
22+
"""Grant to access Twilio Chat"""
23+
24+
def __init__(self, service_sid=None, endpoint_id=None,
25+
deployment_role_sid=None, push_credential_sid=None):
26+
self.service_sid = service_sid
27+
self.endpoint_id = endpoint_id
28+
self.deployment_role_sid = deployment_role_sid
29+
self.push_credential_sid = push_credential_sid
30+
31+
@property
32+
def key(self):
33+
return "chat"
34+
35+
def to_payload(self):
36+
grant = {}
37+
if self.service_sid:
38+
grant['service_sid'] = self.service_sid
39+
if self.endpoint_id:
40+
grant['endpoint_id'] = self.endpoint_id
41+
if self.deployment_role_sid:
42+
grant['deployment_role_sid'] = self.deployment_role_sid
43+
if self.push_credential_sid:
44+
grant['push_credential_sid'] = self.push_credential_sid
45+
46+
return grant
47+
48+
2149
class IpMessagingGrant(AccessTokenGrant):
2250
"""Grant to access Twilio IP Messaging"""
51+
52+
@deprecated
2353
def __init__(self, service_sid=None, endpoint_id=None,
2454
deployment_role_sid=None, push_credential_sid=None):
2555
self.service_sid = service_sid

twilio/rest/api/v2010/account/address/__init__.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ def __init__(self, version, account_sid):
3737
self._uri = '/Accounts/{account_sid}/Addresses.json'.format(**self._solution)
3838

3939
def create(self, customer_name, street, city, region, postal_code, iso_country,
40-
friendly_name=values.unset, emergency_enabled=values.unset):
40+
friendly_name=values.unset, emergency_enabled=values.unset,
41+
auto_correct_address=values.unset):
4142
"""
4243
Create a new AddressInstance
4344
@@ -49,6 +50,7 @@ def create(self, customer_name, street, city, region, postal_code, iso_country,
4950
:param unicode iso_country: The iso_country
5051
:param unicode friendly_name: The friendly_name
5152
:param bool emergency_enabled: The emergency_enabled
53+
:param bool auto_correct_address: The auto_correct_address
5254
5355
:returns: Newly created AddressInstance
5456
:rtype: twilio.rest.api.v2010.account.address.AddressInstance
@@ -62,6 +64,7 @@ def create(self, customer_name, street, city, region, postal_code, iso_country,
6264
'IsoCountry': iso_country,
6365
'FriendlyName': friendly_name,
6466
'EmergencyEnabled': emergency_enabled,
67+
'AutoCorrectAddress': auto_correct_address,
6568
})
6669

6770
payload = self._version.create(
@@ -330,7 +333,8 @@ def fetch(self):
330333

331334
def update(self, friendly_name=values.unset, customer_name=values.unset,
332335
street=values.unset, city=values.unset, region=values.unset,
333-
postal_code=values.unset, emergency_enabled=values.unset):
336+
postal_code=values.unset, emergency_enabled=values.unset,
337+
auto_correct_address=values.unset):
334338
"""
335339
Update the AddressInstance
336340
@@ -341,6 +345,7 @@ def update(self, friendly_name=values.unset, customer_name=values.unset,
341345
:param unicode region: The region
342346
:param unicode postal_code: The postal_code
343347
:param bool emergency_enabled: The emergency_enabled
348+
:param bool auto_correct_address: The auto_correct_address
344349
345350
:returns: Updated AddressInstance
346351
:rtype: twilio.rest.api.v2010.account.address.AddressInstance
@@ -353,6 +358,7 @@ def update(self, friendly_name=values.unset, customer_name=values.unset,
353358
'Region': region,
354359
'PostalCode': postal_code,
355360
'EmergencyEnabled': emergency_enabled,
361+
'AutoCorrectAddress': auto_correct_address,
356362
})
357363

358364
payload = self._version.update(
@@ -581,7 +587,8 @@ def fetch(self):
581587

582588
def update(self, friendly_name=values.unset, customer_name=values.unset,
583589
street=values.unset, city=values.unset, region=values.unset,
584-
postal_code=values.unset, emergency_enabled=values.unset):
590+
postal_code=values.unset, emergency_enabled=values.unset,
591+
auto_correct_address=values.unset):
585592
"""
586593
Update the AddressInstance
587594
@@ -592,6 +599,7 @@ def update(self, friendly_name=values.unset, customer_name=values.unset,
592599
:param unicode region: The region
593600
:param unicode postal_code: The postal_code
594601
:param bool emergency_enabled: The emergency_enabled
602+
:param bool auto_correct_address: The auto_correct_address
595603
596604
:returns: Updated AddressInstance
597605
:rtype: twilio.rest.api.v2010.account.address.AddressInstance
@@ -604,6 +612,7 @@ def update(self, friendly_name=values.unset, customer_name=values.unset,
604612
region=region,
605613
postal_code=postal_code,
606614
emergency_enabled=emergency_enabled,
615+
auto_correct_address=auto_correct_address,
607616
)
608617

609618
@property

twilio/rest/api/v2010/account/usage/record/__init__.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,29 +507,45 @@ class Category(object):
507507
VOICE_INSIGHTS = "voice-insights"
508508
WIRELESS = "wireless"
509509
WIRELESS_ORDERS = "wireless-orders"
510+
WIRELESS_ORDERS_ARTWORK = "wireless-orders-artwork"
510511
WIRELESS_ORDERS_BULK = "wireless-orders-bulk"
511512
WIRELESS_ORDERS_ESIM = "wireless-orders-esim"
512513
WIRELESS_ORDERS_STARTER = "wireless-orders-starter"
513514
WIRELESS_USAGE = "wireless-usage"
514515
WIRELESS_USAGE_COMMANDS = "wireless-usage-commands"
516+
WIRELESS_USAGE_COMMANDS_AFRICA = "wireless-usage-commands-africa"
517+
WIRELESS_USAGE_COMMANDS_ASIA = "wireless-usage-commands-asia"
518+
WIRELESS_USAGE_COMMANDS_CENTRALANDSOUTHAMERICA = "wireless-usage-commands-centralandsouthamerica"
519+
WIRELESS_USAGE_COMMANDS_EUROPE = "wireless-usage-commands-europe"
515520
WIRELESS_USAGE_COMMANDS_HOME = "wireless-usage-commands-home"
521+
WIRELESS_USAGE_COMMANDS_NORTHAMERICA = "wireless-usage-commands-northamerica"
522+
WIRELESS_USAGE_COMMANDS_OCEANIA = "wireless-usage-commands-oceania"
516523
WIRELESS_USAGE_COMMANDS_ROAMING = "wireless-usage-commands-roaming"
517524
WIRELESS_USAGE_DATA = "wireless-usage-data"
525+
WIRELESS_USAGE_DATA_AFRICA = "wireless-usage-data-africa"
526+
WIRELESS_USAGE_DATA_ASIA = "wireless-usage-data-asia"
527+
WIRELESS_USAGE_DATA_CENTRALANDSOUTHAMERICA = "wireless-usage-data-centralandsouthamerica"
518528
WIRELESS_USAGE_DATA_CUSTOM_ADDITIONALMB = "wireless-usage-data-custom-additionalmb"
519529
WIRELESS_USAGE_DATA_CUSTOM_FIRST5MB = "wireless-usage-data-custom-first5mb"
520530
WIRELESS_USAGE_DATA_DOMESTIC_ROAMING = "wireless-usage-data-domestic-roaming"
531+
WIRELESS_USAGE_DATA_EUROPE = "wireless-usage-data-europe"
521532
WIRELESS_USAGE_DATA_INDIVIDUAL_ADDITIONALGB = "wireless-usage-data-individual-additionalgb"
522533
WIRELESS_USAGE_DATA_INDIVIDUAL_FIRSTGB = "wireless-usage-data-individual-firstgb"
523534
WIRELESS_USAGE_DATA_INTERNATIONAL_ROAMING_CANADA = "wireless-usage-data-international-roaming-canada"
524535
WIRELESS_USAGE_DATA_INTERNATIONAL_ROAMING_INDIA = "wireless-usage-data-international-roaming-india"
525536
WIRELESS_USAGE_DATA_INTERNATIONAL_ROAMING_MEXICO = "wireless-usage-data-international-roaming-mexico"
537+
WIRELESS_USAGE_DATA_NORTHAMERICA = "wireless-usage-data-northamerica"
538+
WIRELESS_USAGE_DATA_OCEANIA = "wireless-usage-data-oceania"
526539
WIRELESS_USAGE_DATA_POOLED = "wireless-usage-data-pooled"
527540
WIRELESS_USAGE_DATA_POOLED_DOWNLINK = "wireless-usage-data-pooled-downlink"
528541
WIRELESS_USAGE_DATA_POOLED_UPLINK = "wireless-usage-data-pooled-uplink"
529542
WIRELESS_USAGE_MRC = "wireless-usage-mrc"
530543
WIRELESS_USAGE_MRC_CUSTOM = "wireless-usage-mrc-custom"
531544
WIRELESS_USAGE_MRC_INDIVIDUAL = "wireless-usage-mrc-individual"
532545
WIRELESS_USAGE_MRC_POOLED = "wireless-usage-mrc-pooled"
546+
WIRELESS_USAGE_MRC_SUSPENDED = "wireless-usage-mrc-suspended"
547+
WIRELESS_USAGE_VOICE = "wireless-usage-voice"
548+
WIRELESS_USAGE_SMS = "wireless-usage-sms"
533549

534550
def __init__(self, version, payload, account_sid):
535551
"""

twilio/rest/api/v2010/account/usage/record/all_time.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,29 +369,45 @@ class Category(object):
369369
VOICE_INSIGHTS = "voice-insights"
370370
WIRELESS = "wireless"
371371
WIRELESS_ORDERS = "wireless-orders"
372+
WIRELESS_ORDERS_ARTWORK = "wireless-orders-artwork"
372373
WIRELESS_ORDERS_BULK = "wireless-orders-bulk"
373374
WIRELESS_ORDERS_ESIM = "wireless-orders-esim"
374375
WIRELESS_ORDERS_STARTER = "wireless-orders-starter"
375376
WIRELESS_USAGE = "wireless-usage"
376377
WIRELESS_USAGE_COMMANDS = "wireless-usage-commands"
378+
WIRELESS_USAGE_COMMANDS_AFRICA = "wireless-usage-commands-africa"
379+
WIRELESS_USAGE_COMMANDS_ASIA = "wireless-usage-commands-asia"
380+
WIRELESS_USAGE_COMMANDS_CENTRALANDSOUTHAMERICA = "wireless-usage-commands-centralandsouthamerica"
381+
WIRELESS_USAGE_COMMANDS_EUROPE = "wireless-usage-commands-europe"
377382
WIRELESS_USAGE_COMMANDS_HOME = "wireless-usage-commands-home"
383+
WIRELESS_USAGE_COMMANDS_NORTHAMERICA = "wireless-usage-commands-northamerica"
384+
WIRELESS_USAGE_COMMANDS_OCEANIA = "wireless-usage-commands-oceania"
378385
WIRELESS_USAGE_COMMANDS_ROAMING = "wireless-usage-commands-roaming"
379386
WIRELESS_USAGE_DATA = "wireless-usage-data"
387+
WIRELESS_USAGE_DATA_AFRICA = "wireless-usage-data-africa"
388+
WIRELESS_USAGE_DATA_ASIA = "wireless-usage-data-asia"
389+
WIRELESS_USAGE_DATA_CENTRALANDSOUTHAMERICA = "wireless-usage-data-centralandsouthamerica"
380390
WIRELESS_USAGE_DATA_CUSTOM_ADDITIONALMB = "wireless-usage-data-custom-additionalmb"
381391
WIRELESS_USAGE_DATA_CUSTOM_FIRST5MB = "wireless-usage-data-custom-first5mb"
382392
WIRELESS_USAGE_DATA_DOMESTIC_ROAMING = "wireless-usage-data-domestic-roaming"
393+
WIRELESS_USAGE_DATA_EUROPE = "wireless-usage-data-europe"
383394
WIRELESS_USAGE_DATA_INDIVIDUAL_ADDITIONALGB = "wireless-usage-data-individual-additionalgb"
384395
WIRELESS_USAGE_DATA_INDIVIDUAL_FIRSTGB = "wireless-usage-data-individual-firstgb"
385396
WIRELESS_USAGE_DATA_INTERNATIONAL_ROAMING_CANADA = "wireless-usage-data-international-roaming-canada"
386397
WIRELESS_USAGE_DATA_INTERNATIONAL_ROAMING_INDIA = "wireless-usage-data-international-roaming-india"
387398
WIRELESS_USAGE_DATA_INTERNATIONAL_ROAMING_MEXICO = "wireless-usage-data-international-roaming-mexico"
399+
WIRELESS_USAGE_DATA_NORTHAMERICA = "wireless-usage-data-northamerica"
400+
WIRELESS_USAGE_DATA_OCEANIA = "wireless-usage-data-oceania"
388401
WIRELESS_USAGE_DATA_POOLED = "wireless-usage-data-pooled"
389402
WIRELESS_USAGE_DATA_POOLED_DOWNLINK = "wireless-usage-data-pooled-downlink"
390403
WIRELESS_USAGE_DATA_POOLED_UPLINK = "wireless-usage-data-pooled-uplink"
391404
WIRELESS_USAGE_MRC = "wireless-usage-mrc"
392405
WIRELESS_USAGE_MRC_CUSTOM = "wireless-usage-mrc-custom"
393406
WIRELESS_USAGE_MRC_INDIVIDUAL = "wireless-usage-mrc-individual"
394407
WIRELESS_USAGE_MRC_POOLED = "wireless-usage-mrc-pooled"
408+
WIRELESS_USAGE_MRC_SUSPENDED = "wireless-usage-mrc-suspended"
409+
WIRELESS_USAGE_VOICE = "wireless-usage-voice"
410+
WIRELESS_USAGE_SMS = "wireless-usage-sms"
395411

396412
def __init__(self, version, payload, account_sid):
397413
"""

twilio/rest/api/v2010/account/usage/record/daily.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,29 +369,45 @@ class Category(object):
369369
VOICE_INSIGHTS = "voice-insights"
370370
WIRELESS = "wireless"
371371
WIRELESS_ORDERS = "wireless-orders"
372+
WIRELESS_ORDERS_ARTWORK = "wireless-orders-artwork"
372373
WIRELESS_ORDERS_BULK = "wireless-orders-bulk"
373374
WIRELESS_ORDERS_ESIM = "wireless-orders-esim"
374375
WIRELESS_ORDERS_STARTER = "wireless-orders-starter"
375376
WIRELESS_USAGE = "wireless-usage"
376377
WIRELESS_USAGE_COMMANDS = "wireless-usage-commands"
378+
WIRELESS_USAGE_COMMANDS_AFRICA = "wireless-usage-commands-africa"
379+
WIRELESS_USAGE_COMMANDS_ASIA = "wireless-usage-commands-asia"
380+
WIRELESS_USAGE_COMMANDS_CENTRALANDSOUTHAMERICA = "wireless-usage-commands-centralandsouthamerica"
381+
WIRELESS_USAGE_COMMANDS_EUROPE = "wireless-usage-commands-europe"
377382
WIRELESS_USAGE_COMMANDS_HOME = "wireless-usage-commands-home"
383+
WIRELESS_USAGE_COMMANDS_NORTHAMERICA = "wireless-usage-commands-northamerica"
384+
WIRELESS_USAGE_COMMANDS_OCEANIA = "wireless-usage-commands-oceania"
378385
WIRELESS_USAGE_COMMANDS_ROAMING = "wireless-usage-commands-roaming"
379386
WIRELESS_USAGE_DATA = "wireless-usage-data"
387+
WIRELESS_USAGE_DATA_AFRICA = "wireless-usage-data-africa"
388+
WIRELESS_USAGE_DATA_ASIA = "wireless-usage-data-asia"
389+
WIRELESS_USAGE_DATA_CENTRALANDSOUTHAMERICA = "wireless-usage-data-centralandsouthamerica"
380390
WIRELESS_USAGE_DATA_CUSTOM_ADDITIONALMB = "wireless-usage-data-custom-additionalmb"
381391
WIRELESS_USAGE_DATA_CUSTOM_FIRST5MB = "wireless-usage-data-custom-first5mb"
382392
WIRELESS_USAGE_DATA_DOMESTIC_ROAMING = "wireless-usage-data-domestic-roaming"
393+
WIRELESS_USAGE_DATA_EUROPE = "wireless-usage-data-europe"
383394
WIRELESS_USAGE_DATA_INDIVIDUAL_ADDITIONALGB = "wireless-usage-data-individual-additionalgb"
384395
WIRELESS_USAGE_DATA_INDIVIDUAL_FIRSTGB = "wireless-usage-data-individual-firstgb"
385396
WIRELESS_USAGE_DATA_INTERNATIONAL_ROAMING_CANADA = "wireless-usage-data-international-roaming-canada"
386397
WIRELESS_USAGE_DATA_INTERNATIONAL_ROAMING_INDIA = "wireless-usage-data-international-roaming-india"
387398
WIRELESS_USAGE_DATA_INTERNATIONAL_ROAMING_MEXICO = "wireless-usage-data-international-roaming-mexico"
399+
WIRELESS_USAGE_DATA_NORTHAMERICA = "wireless-usage-data-northamerica"
400+
WIRELESS_USAGE_DATA_OCEANIA = "wireless-usage-data-oceania"
388401
WIRELESS_USAGE_DATA_POOLED = "wireless-usage-data-pooled"
389402
WIRELESS_USAGE_DATA_POOLED_DOWNLINK = "wireless-usage-data-pooled-downlink"
390403
WIRELESS_USAGE_DATA_POOLED_UPLINK = "wireless-usage-data-pooled-uplink"
391404
WIRELESS_USAGE_MRC = "wireless-usage-mrc"
392405
WIRELESS_USAGE_MRC_CUSTOM = "wireless-usage-mrc-custom"
393406
WIRELESS_USAGE_MRC_INDIVIDUAL = "wireless-usage-mrc-individual"
394407
WIRELESS_USAGE_MRC_POOLED = "wireless-usage-mrc-pooled"
408+
WIRELESS_USAGE_MRC_SUSPENDED = "wireless-usage-mrc-suspended"
409+
WIRELESS_USAGE_VOICE = "wireless-usage-voice"
410+
WIRELESS_USAGE_SMS = "wireless-usage-sms"
395411

396412
def __init__(self, version, payload, account_sid):
397413
"""

0 commit comments

Comments
 (0)
0