def test_get_file_meta(self):
     scs = SCSBucket(self.bucket_name)
     try:
         scs.put_bucket('public-read-write')
     except:
         self.fail('create bucket:%s is failed'%self.bucket_name)
       
     metadata = {}                                   #自定义文件属性信息
     metadata['author'] = 'dage'
     metadata['home'] = 'tianjin'
     metadata['age'] = '18'
     mimetype = 'text/plain'
       
     scs.putFile(key=self.object_key, filePath=self.local_file_name,
                 metadata=metadata, mimetype=mimetype)
           
     metaResult = scs.meta(self.object_key)
       
     self.assertEqual(self.object_key, metaResult['File-Name'], 'The meta[\'File-Name\'] is not equals '+self.object_key)
     self.assertEqual(mimetype, metaResult['Type'], 'The meta[\'Type\'] is not equals '+mimetype)
     self.assertTrue(metaResult['Content-SHA1'] is not None, 'The meta[\'Content-SHA1\'] is None')
     self.assertTrue(metaResult['Content-MD5'] is not None, 'The meta[\'Content-MD5\'] is None')
     self.assertTrue(metaResult['Owner'] is not None, 'The meta[\'Owner\'] is None')
       
     self.assertTrue('x-amz-meta-author' in metaResult['File-Meta'], 'File-Meta dose not contains x-amz-meta-author key')
     self.assertEqual(metadata['author'], metaResult['File-Meta']['x-amz-meta-author'], 'The metaResult[\'File-Meta\'][\'x-amz-meta-author\'] value is not match')
     self.assertTrue('x-amz-meta-home' in metaResult['File-Meta'], 'File-Meta dose not contains x-amz-meta-home key')
     self.assertEqual(metadata['home'], metaResult['File-Meta']['x-amz-meta-home'], 'The metaResult[\'File-Meta\'][\'x-amz-meta-home\'] value is not match')
     self.assertTrue('x-amz-meta-age' in metaResult['File-Meta'], 'File-Meta dose not contains x-amz-meta-age key')
     self.assertEqual(metadata['age'], metaResult['File-Meta']['x-amz-meta-age'], 'The metaResult[\'File-Meta\'][\'x-amz-meta-age\'] value is not match')
 def test_put_file_relax(self):
     scs = SCSBucket(self.bucket_name)
     try:
         scs.put_bucket('public-read-write')
     except:
         self.fail('create bucket:%s is failed'%self.bucket_name)
          
     scs.put(self.object_key, 'fileContent...fileContent...fileContent...fileContent...fileContent...')
      
     orign_file_metaResult = scs.meta(self.object_key)
      
     canned_acl = 'public-read-write'                #快捷ACL
     metadata = {}                                   #自定义文件属性信息
     metadata['author'] = 'dage'
     metadata['home'] = 'tianjin'
     metadata['age'] = '18'
     mimetype = 'text/plain'
     scs.put_relax(key=self.object_key+'_relax', sina_sha1=orign_file_metaResult['Content-SHA1'], 
                   s_sina_length=orign_file_metaResult['Size'], acl=canned_acl, 
                   metadata=metadata, mimetype=mimetype)
      
     relax_file_aclInfo = scs.acl_info(self.object_key+'_relax')
     self.assertTrue(ACL.ACL_GROUP_ANONYMOUSE in relax_file_aclInfo['ACL'], 'The acl dose not contains GRPS000000ANONYMOUSE group')
     self.assertTrue(ACL.ACL_READ in relax_file_aclInfo['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The acl GRPS000000ANONYMOUSE group hasn\'t read right')
     self.assertTrue(ACL.ACL_WRITE in relax_file_aclInfo['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The acl GRPS000000ANONYMOUSE group hasn\'t write right')
      
     relax_file_info = scs.info(self.object_key+'_relax')
     #assert metadata
     self.assertEqual(metadata['author'], relax_file_info['metadata']['author'], 'The response metadata[\'author\'] is not match')
     self.assertEqual(metadata['home'], relax_file_info['metadata']['home'], 'The response metadata[\'home\'] is not match')
     self.assertEqual(metadata['age'], relax_file_info['metadata']['age'], 'The response metadata[\'age\'] is not match')
     #assert content-type
     self.assertEqual(mimetype, relax_file_info['headers']['content-type'], 'The response content-type is not match')
Beispiel #3
0
def push(dirname):
    '''
    把dirname文件夹下所有文件都以相同的结构同步到sae云存储中
    比如,在dirname下有如下文件:
        dirname/a/test.txt
        dirname/test.txt
    推送到sae的云存储中的文件结构就是:
        /a/test.txt
        /test.txt
    注意空文件夹不推送
    '''
    akey = os.environ['SAE_STORAGE_ACCESS_KEY']
    skey = os.environ['SAE_STORAGE_SECRET_KEY']
    bucketname = os.environ['SAE_BUCKET_NAME']
    sinastorage.setDefaultAppInfo(akey, skey)
    bucket = SCSBucket(bucketname, secure=False)
    fpaths = []
    for root, dirs, files in os.walk(dirname):
        ps = splitpath(root)
        visible = True
        for p in ps:
            if p.startswith('.'):
                visible = False
        if not visible:
            continue
        del ps[0]
        for f in files:
            local_fpath = os.path.join(root, f)
            ps.append(f)
            fpath = pathjoin(*ps)
            print('check :' + fpath)
            fpaths.append(fpath)
            # if not fpath.startswith(PATH_SPLITER):
            #     fpath =PATH_SPLITER+fpath
            if file_exist(bucket, fpath):
                meta = bucket.meta(fpath)
                sae_sha1 = ['Content-SHA1']
                fdata = open(local_fpath, 'rb').read()
                if len(fdata) == 0 and meta['Size'] == 0:
                    pass
                else:
                    sha1 = hashlib.sha1()
                    sha1.update(fdata)
                    if sae_sha1 != sha1.hexdigest():
                        bucket.putFile(fpath, local_fpath)
            else:
                bucket.putFile(fpath, local_fpath)
    sae_files = bucket.listdir(prefix='')
    for f in sae_files:
        #f=(name, isPrefix, sha1, expiration_time, modify, owner, md5, content_type, size)
        localf = os.path.join(dirname, f[0])
        print('expecting local: ', localf)
        if f[0] not in fpaths and not os.path.isfile(localf):
            print('del ' + f[0])
            del bucket[f[0]]
        else:
            print('has ' + f[0])
 def test_create_bucket_with_acl(self):
     scs = SCSBucket(self.bucket_name)
     try:
         scs.put_bucket('public-read-write')
     except:
         self.fail('create bucket:%s is failed'%self.bucket_name)
           
     metaResult = scs.meta()
     self.assertTrue(ACL.ACL_GROUP_ANONYMOUSE in metaResult['ACL'], 'The bucket:%s acl dose not contains GRPS000000ANONYMOUSE group'%self.bucket_name)
     self.assertTrue(ACL.ACL_READ in metaResult['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The bucket:%s acl GRPS000000ANONYMOUSE group hasn\'t read right'%self.bucket_name)
     self.assertTrue(ACL.ACL_WRITE in metaResult['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The bucket:%s acl GRPS000000ANONYMOUSE group hasn\'t write right'%self.bucket_name)
 def test_get_bucket_meta(self):
     scs = SCSBucket(self.bucket_name)
     try:
         scs.put_bucket('public-read-write')
     except:
         self.fail('create bucket:%s is failed'%self.bucket_name)
           
     metaResult = scs.meta()
     self.assertTrue(ACL.ACL_GROUP_ANONYMOUSE in metaResult['ACL'], 'The bucket:%s acl dose not contains GRPS000000ANONYMOUSE group'%self.bucket_name)
     self.assertTrue(ACL.ACL_READ in metaResult['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The bucket:%s acl GRPS000000ANONYMOUSE group hasn\'t read right'%self.bucket_name)
     self.assertTrue(ACL.ACL_WRITE in metaResult['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The bucket:%s acl GRPS000000ANONYMOUSE group hasn\'t write right'%self.bucket_name)
       
     self.assertEqual(self.bucket_name, metaResult['Project'], 'The metaResult[\'Project\'] is not equal %s'%self.bucket_name)
     self.assertTrue(metaResult['Owner'] is not None, 'The metaResult[\'Owner\'] is None')
     self.assertTrue(metaResult['Last-Modified'] is not None, 'The metaResult[\'Last-Modified\'] is None')
Beispiel #6
0
def get_file_meta():
    s = SCSBucket('test11')
    metaDict = s.meta('InstoreApp.ipa')
    print metaDict
Beispiel #7
0
def get_bucket_meta():
    s = SCSBucket('test11')
    metaDict = s.meta()
    print metaDict