Esempio n. 1
0
 def url(self, name):
     """
     Returns the URL where the contents of the file referenced by name can
     be accessed.
     """
     try:
         m = hashlib.sha1()
         m.update(self.container)
         m.update(name)
         cache_key = m.hexdigest()
         val = cache.get(cache_key)
         if val is None:
             logger.info("trying to generate shared access url for %s" %
                         name)
             accss_plcy = AccessPolicy()
             now = datetime.datetime.now()
             today = now.strftime('%Y-%m-%d')
             tomorrow_datetime = now + datetime.timedelta(days=1)
             tomorrow = tomorrow_datetime.strftime('%Y-%m-%d')
             accss_plcy.start = today
             accss_plcy.expiry = tomorrow
             accss_plcy.permission = 'r'
             signed_identifier = None
             sap = SharedAccessPolicy(accss_plcy, signed_identifier)
             logger.info("shared access policy created")
             signer = SharedAccessSignature(account_name=self.account_name,
                                            account_key=self.account_key)
             logger.info("signed created")
             qry_str = signer.generate_signed_query_string(
                 "%s/%s" % (self.container, name), 'b', sap)
             logger.info("signed query string created")
             val = '%s/%s?%s' % (self._get_container_url(), name,
                                 signer._convert_query_string(qry_str))
             # cache for 23 hours
             timeout = 60 * 60 * 23
             cache.set(cache_key, val, timeout)
             return val
         else:
             logger.info("url cache hit for %s" % name)
             return val
     except Exception as ex:
         logger.error("shared access error %s" % ex)
         return None