Exemple #1
0
class OSS(object):
    def __init__(self, ak, sk, region):
        self.c = Connection(ak, sk, host=region)
        self.buckets = self.c.get_all_buckets()

    def print_all_buckets(self):
        for b in self.buckets:
            print(b.name)

    def print_key_name(self, bucket_name):
        b = self.c.get_bucket(bucket_name)
        for k in b.list():
            print(k.name)

    def create_bucket(self):
        raise NotImplementedError

    def get_md5(self, filename):
        with open(filename, 'rb') as f:
            md5 = hashlib.md5()
            md5.update(f.read())
        #return (md5.digest(), md5.digest().encode('base64')[:-1])
        return md5

    def upload(self, pathname, bucket_name, policy="public-read"):
        """upload file or dir to specified bucket"""
        b = self.c.get_bucket(bucket_name)
        if os.path.isfile(pathname):
            key_name = os.path.basename(pathname)
            k = b.new_key(key_name)
            md5 = self.get_md5(pathname)
            print(pathname)
            print(key_name)
            k.set_contents_from_filename(
                pathname,
                policy=policy,
                md5=(md5.digest(), md5.digest().encode('base64')[:-1]))
        elif os.path.isdir(pathname):
            basename = os.path.basename(pathname)
            print(basename)
            for root, dirs, files in os.walk(pathname):
                for f in files:
                    filename = os.path.join(root, f)
                    key_name = "%s/%s" % (
                        basename, filename.replace(pathname, "").replace(
                            os.path.sep, '/').lstrip('/'))

                    k = b.new_key(key_name)
                    md5 = self.get_md5(filename)
                    print(filename)
                    print(key_name)
                    k.set_contents_from_filename(
                        filename,
                        policy=policy,
                        md5=(md5.digest(), md5.digest().encode('base64')[:-1]))
class Conn:
    def __init__(self, ak, sk, host, bucket):
        self.bucket = bucket
        self.ksyun = Connection(ak, sk, host=host)
        if not self._exist(bucket):
            self.ksyun.create_bucket(bucket)
        assert self._exist(bucket)

    def _exist(self, bucket):
        buckets = [b.name for b in self.ksyun.get_all_buckets()]
        return bucket in buckets

    def upload(self, keyname, filename):
        try:
            bucket = self.ksyun.get_bucket(self.bucket)
            key_object = bucket.new_key(keyname)
            key_object.set_contents_from_filename(filename)
            return {"result": 0, "msg": keyname}
        except:
            return {"result": -1, "msg": traceback.format_exc()}
            pass

    def download(self, filename, keyname):
        try:
            bucket = self.ksyun.get_bucket(self.bucket)
            key_object = bucket.get_key(keyname)
            key_object.get_contents_to_filename(filename)
            return {"result": 0, "msg": filename}
        except:
            return {"result": -1, "msg": traceback.format_exc()}
            pass

    def make_key(self, app_key, version, package_name):
        return ''.join([
            app_key,
            md5.new(version).hexdigest(),
            md5.new(package_name).hexdigest()
        ]).lower()
Exemple #3
0
#!/bin/python
# -*- coding: UTF-8 -*-

from ks3.connection import Connection
ak = 'TnivEIMCaLje6fGL20oK'
sk = 'lmppx27iWiOOxiMIwUe4HYldLmrPb0aHTIafYf53'

c = Connection(ak, sk, host="kss.ksyun.com")

my_bucket = "vod"
buckets = c.get_all_buckets()

b = c.get_bucket(my_bucket)

keys = b.list()
acp = b.get_acl()
print acp
for k in keys:
	print k
'''
for b in buckets:
	#print b.name
	if b.name = my_bucket:
		acp = my_bucket.get_acl()
		print acp.acl.grant.permission


#acp = sqtest.get_acl()
#for grant in acp.acl.grants:
#print acp.acl.grant.permission
#print grant.permission, grant.display_name, grant.email_address, grant.id