| 19 | |
| 20 | |
| 21 | class QueueSasSamples(): |
| 22 | def __init__(self, account): |
| 23 | self.account = account |
| 24 | |
| 25 | def run_all_samples(self): |
| 26 | self.service = self.account.create_queue_service() |
| 27 | |
| 28 | self.queue_sas() |
| 29 | self.account_sas() |
| 30 | |
| 31 | self.queue_acl() |
| 32 | self.sas_with_signed_identifiers() |
| 33 | |
| 34 | def _create_queue(self, prefix='queue'): |
| 35 | queue_name = '{}{}'.format(prefix, str(uuid.uuid4()).replace('-', '')) |
| 36 | self.service.create_queue(queue_name) |
| 37 | return queue_name |
| 38 | |
| 39 | def queue_sas(self): |
| 40 | queue_name = self._create_queue() |
| 41 | self.service.put_message(queue_name, u'message1') |
| 42 | |
| 43 | # Access only to the messages in the given queue |
| 44 | # Process permissions to access messages |
| 45 | # Expires in an hour |
| 46 | token = self.service.generate_queue_shared_access_signature( |
| 47 | queue_name, |
| 48 | QueuePermissions.PROCESS, |
| 49 | datetime.utcnow() + timedelta(hours=1), |
| 50 | ) |
| 51 | |
| 52 | # Create a service and use the SAS |
| 53 | sas_service = QueueService( |
| 54 | account_name=self.account.account_name, |
| 55 | sas_token=token, |
| 56 | ) |
| 57 | |
| 58 | messages = sas_service.get_messages(queue_name) |
| 59 | for message in messages: |
| 60 | print(message.content) # message1 |
| 61 | |
| 62 | self.service.delete_queue(queue_name) |
| 63 | |
| 64 | def account_sas(self): |
| 65 | queue_name = self._create_queue() |
| 66 | metadata = {'val1': 'foo', 'val2': 'blah'} |
| 67 | self.service.set_queue_metadata(queue_name, metadata=metadata) |
| 68 | |
| 69 | # Access to read operations on the queues themselves |
| 70 | # Expires in an hour |
| 71 | token = self.service.generate_account_shared_access_signature( |
| 72 | ResourceTypes.CONTAINER, |
| 73 | AccountPermissions.READ, |
| 74 | datetime.utcnow() + timedelta(hours=1), |
| 75 | ) |
| 76 | |
| 77 | # Create a service and use the SAS |
| 78 | sas_service = QueueService( |
no outgoing calls