예제 #1
0
    def make_url_authed(self, key, expire=datetime.timedelta(minutes=5), 
                        ip=None, cheese=None, fn=None):
        """Produce an authenticated URL for scs object *key*.

        *expire* is a delta or a datetime on which the authenticated URL
        expires. It defaults to five minutes, and accepts a timedelta, an
        integer delta in seconds, or a datetime.

        To generate an unauthenticated URL for a key, see `B.make_url`.
        """
        expire = expire2datetime(expire)
        expire = time.mktime(expire.timetuple()[:9])
        expire = str(int(expire))
        scsreq = self.request(key=key, headers={"Date": expire})
        sign = scsreq.sign(self)
        args_list = {"KID": 'sina,%s'%self.access_key,
                      "Expires": expire,
                      "ssig": sign}
        if ip:
            args_list['ip'] = ip
        if cheese:
            args_list['cheese'] = cheese
        if fn:
            args_list['fn'] = fn
        scsreq.args = args_list.items()
        return scsreq.url(self.base_url, arg_sep="&")
예제 #2
0
    def putFileByHeaders(self, key, fileWithCallback):
        '''
            filePath            本地文件路径
            progressCallback    上传文件进度回调方法    _callback(self._total, len(data), *self._args)
        '''
        headers={}
        f = file(fileWithCallback.name, 'rb')
#         headers["s-sina-sha1"] = aws_md5(f)
        f.close()
        
        from email.utils import formatdate
        from calendar import timegm
        expireDate = expire2datetime(datetime.timedelta(minutes=60*24))
        expireDate =  formatdate(timegm(expireDate.timetuple()), usegmt=True)
        headers['Date'] = expireDate
        
        return self.put(key=key, data=fileWithCallback, headers=headers)
예제 #3
0
 def putFile(self, key, filePath, progressCallback=None, acl=None, metadata={}, mimetype=None,
         transformer=None, headers={}, args=None, subresource=None):
     '''
         filePath            本地文件路径
         progressCallback    上传文件进度回调方法    _callback(self._total, len(data), *self._args)
     '''
     f = file(filePath, 'rb')
     headers["s-sina-sha1"] = aws_md5(f)
     f.close()
     
     from email.utils import formatdate
     from calendar import timegm
     expireDate = expire2datetime(datetime.timedelta(minutes=60*24))
     expireDate =  formatdate(timegm(expireDate.timetuple()), usegmt=True)
 
     headers['Date'] = expireDate
     
     fileWithCallback = FileWithCallback(filePath, 'rb', progressCallback)
     return self.put(key, fileWithCallback, acl, metadata, mimetype, transformer, headers, args, subresource)