Ejemplo n.º 1
0
    def download(args):
        conf = load_conf()
        client = CosS3Client(conf)
        Interface = client.op_int()
        if not isinstance(args.local_path, unicode):
            args.local_path = args.local_path.decode(fs_coding)

        if not isinstance(args. cos_path, unicode):
            args.cos_path = args.cos_path.decode(fs_coding)

#         if args.cos_path.endswith('/') is False:
#             args.cos_path += '/'
#         if args.local_path.endswith('/') is True:
#             args.local_path += args.cos_path.split('/')[-2]
#         args.cos_path = args.cos_path[:-1]
        args.cos_path, args.local_path = concat_path(args.cos_path, args.local_path)
        if args.recursive:
            rt = Interface.download_folder(args.cos_path, args.local_path, args.force)
            if rt:
                logger.debug(change_color("download all files under \"{file}\" directory successfully".format(file=to_printable_str(args.cos_path)), color_green))
                return 0
            else:
                logger.debug(change_color("download all files under \"{file}\" directory failed".format(file=to_printable_str(args.cos_path)), color_red))
                return -1
        else:
            if Interface.download_file(args.cos_path, args.local_path, args.force) is True:
                return 0
            else:
                return -1
        return -1
Ejemplo n.º 2
0
    def delete(args):
        conf = load_conf()
        client = CosS3Client(conf)
        while args.cos_path.startswith('/'):
            args.cos_path = args.cos_path[1:]
        Interface = client.op_int()

        if not isinstance(args. cos_path, unicode):
            args.cos_path = args.cos_path.decode(fs_coding)

        if args.recursive:
            if args.cos_path.endswith('/') is False:
                args.cos_path += '/'
            if args.cos_path == '/':
                args.cos_path = ''
            if Interface.delete_folder(args.cos_path, args.force):
                logger.debug(change_color("delete all files under {cos_path} successfully!".format(cos_path=to_printable_str(args.cos_path)), color_green))
                return 0
            else:
                logger.debug(change_color("delete all files under {cos_path} failed!".format(cos_path=to_printable_str(args.cos_path)), color_red))
                return -1
        else:
            if Interface.delete_file(args.cos_path, args.force):
                logger.debug(change_color("delete all files under {cos_path} successfully!".format(cos_path=to_printable_str(args.cos_path)), color_green))
                return 0
            else:
                logger.debug(change_color("delete all files under {cos_path} failed!".format(cos_path=to_printable_str(args.cos_path)), color_red))
                return -1
Ejemplo n.º 3
0
    def download(args):
        conf = load_conf()
        client = CosS3Client(conf)
        while args.cos_path.startswith('/'):
            args.cos_path = args.cos_path[1:]
        Interface = client.op_int()
        if not isinstance(args.local_path, unicode):
            args.local_path = args.local_path.decode(fs_coding)

        if not isinstance(args. cos_path, unicode):
            args.cos_path = args.cos_path.decode(fs_coding)

        if args.recursive:
            if args.cos_path.endswith('/') is False:
                args.cos_path += '/'
            if args.local_path.endswith('/') is False:
                args.local_path += '/'
            rt = Interface.download_folder(args.cos_path, args.local_path, args.force)
            if rt:
                logger.info(change_color("download all files under \"{file}\" directory successfully".format(file=to_printable_str(args.cos_path)), color_green))
                return 0
            else:
                logger.warn(change_color("download all files under \"{file}\" directory failed".format(file=to_printable_str(args.cos_path)), color_red))
                return -1
        else:
            if Interface.download_file(args.cos_path, args.local_path, args.force) is True:
                logger.info(change_color("download \"{file}\" successfully".format(file=to_printable_str(args.cos_path)), color_green))
                return 0
            else:
                logger.warn(change_color("download \"{file}\" failed".format(file=to_printable_str(args.cos_path)), color_red))
                return -1
        return -1
Ejemplo n.º 4
0
    def mget(args):
        conf = load_conf()
        client = CosS3Client(conf)
        while args.cos_path.startswith('/'):
            args.cos_path = args.cos_path[1:]
        Interface = client.op_int()
        if not isinstance(args.local_path, unicode):
            args.local_path = args.local_path.decode(fs_coding)

        if not isinstance(args.cos_path, unicode):
            args.cos_path = args.cos_path.decode(fs_coding)

        if Interface.mget(args.cos_path, args.local_path, args.force,
                          args.num) is True:
            logger.debug(
                change_color(
                    "mget \"{file}\" successfully".format(
                        file=to_printable_str(args.cos_path)), color_green))
            return 0
        else:
            logger.debug(
                change_color(
                    "mget \"{file}\" failed".format(
                        file=to_printable_str(args.cos_path)), color_red))
            return -1
        return -1
Ejemplo n.º 5
0
 def delete_bucket(args):
     conf = load_conf()
     client = CosS3Client(conf)
     Interface = client.op_int()
     if Interface.delete_bucket():
         return 0
     else:
         logger.warn("delete fail!")
         return -1
Ejemplo n.º 6
0
 def delete_bucket():
     conf = load_conf()
     client = CosS3Client(conf)
     Interface = client.op_int()
     if Interface.delete_bucket():
         return 0
     else:
         logger.warn(change_color("delete fail!", color_red))
         return -1
Ejemplo n.º 7
0
 def list_bucket(args):
     conf = load_conf()
     client = CosS3Client(conf)
     Interface = client.op_int()
     if Interface.get_bucket(args.cos_path):
         return 0
     else:
         logger.warn(change_color("list fail!", color_red))
         return -1
Ejemplo n.º 8
0
 def get_bucket_acl(args):
     conf = load_conf()
     client = CosS3Client(conf)
     Interface = client.op_int()
     rt = Interface.get_bucket_acl()
     if rt is True:
         return 0
     else:
         logger.warn("get fail!")
         return -1
Ejemplo n.º 9
0
 def put_bucket_acl(args):
     conf = load_conf()
     client = CosS3Client(conf)
     Interface = client.op_int()
     rt = Interface.put_bucket_acl(args.grant_read, args.grant_write, args.grant_full_control)
     if rt is True:
         return 0
     else:
         logger.warn(change_color("put fail!", color_red))
         return -1
Ejemplo n.º 10
0
 def create_bucket(args):
     conf = load_conf()
     client = CosS3Client(conf)
     Interface = client.op_int()
     if Interface.create_bucket():
         logger.info(change_color("create success!", color_green))
         return 0
     else:
         logger.warn(change_color("create fail!", color_red))
         return -1
Ejemplo n.º 11
0
 def get_bucket_acl():
     conf = load_conf()
     client = CosS3Client(conf)
     Interface = client.op_int()
     rt = Interface.get_bucket_acl()
     if rt is True:
         logger.info(change_color("get success!", color_green))
         return 0
     else:
         logger.warn(change_color("get fail!", color_red))
         return -1
Ejemplo n.º 12
0
    def info(args):
        conf = load_conf()
        client = CosS3Client(conf)
        while args.cos_path.startswith('/'):
            args.cos_path = args.cos_path[1:]

        if not isinstance(args.cos_path, unicode):
            args.cos_path = args.cos_path.decode(fs_coding)
        Interface = client.op_int()
        if Interface.info_object(args.cos_path, _human=args.human):
            return 0
        else:
            return -1
Ejemplo n.º 13
0
 def signurl(args):
     conf = load_conf()
     client = CosS3Client(conf)
     while args.cos_path.startswith('/'):
         args.cos_path = args.cos_path[1:]
     try:
         Interface = client.op_int()
         rt = Interface.sign_url(args.cos_path, args.timeout)
         logger.info(rt)
         return True
     except Exception:
         logger.warn('geturl failed')
         return False
Ejemplo n.º 14
0
    def list(args):
        conf = load_conf()
        client = CosS3Client(conf)
        while args.cos_path.startswith('/'):
            args.cos_path = args.cos_path[1:]

        if not isinstance(args. cos_path, unicode):
            args.cos_path = args.cos_path.decode(fs_coding)
        Interface = client.op_int()
        if Interface.list_objects(cos_path=args.cos_path, _recursive=args.recursive, _all=args.all, _num=args.num, _human=args.human):
            return 0
        else:
            logger.warn(change_color("list failed!", color_red))
Ejemplo n.º 15
0
 def delete_bucket(args):
     conf = load_conf()
     client = CosS3Client(conf)
     Interface = client.op_int()
     if args.force is True:
         if Interface.delete_folder("") is False:
             logger.warn(change_color("delete files in bucket fail", color_red))
             return -1
     if Interface.delete_bucket():
         logger.info(change_color("delete success!", color_green))
         return 0
     else:
         logger.warn(change_color("delete fail!", color_red))
         return -1
Ejemplo n.º 16
0
    def restore(args):
        conf = load_conf()
        client = CosS3Client(conf)
        while args.cos_path.startswith('/'):
            args.cos_path = args.cos_path[1:]

        if not isinstance(args. cos_path, unicode):
            args.cos_path = args.cos_path.decode(fs_coding)
        Interface = client.op_int()
        if Interface.restore_object(cos_path=args.cos_path, _day=args.day, _tier=args.tier):
            return 0
        else:
            # logger.warn(change_color("list failed!", color_red))
            return -1
Ejemplo n.º 17
0
    def upload(args):
        conf = load_conf()
        client = CosS3Client(conf)
        while args.cos_path.startswith('/'):
            args.cos_path = args.cos_path[1:]
        Interface = client.op_int()

        if not isinstance(args.local_path, unicode):
            args.local_path = args.local_path.decode(fs_coding)
        if not isinstance(args.cos_path, unicode):
            args.cos_path = args.cos_path.decode(fs_coding)

        if not os.path.exists(args.local_path):
            logger.warn(change_color("cannot stat '%s': No such file or directory" % to_printable_str(args.local_path), color_red))
            return -1

        if not os.access(args.local_path, os.R_OK):
            logger.warn('local_path %s is not readable!' % to_printable_str(args.local_path))
            return -1
        if args.recursive:
            if os.path.isfile(args.local_path) is True:
                rt = Interface.upload_file(args.local_path, args.cos_path)
            elif os.path.isdir(args.local_path):
                if args.cos_path.endswith('/') is False:
                    args.cos_path += '/'
                if args.local_path.endswith('/') is False:
                    args.local_path += '/'
                rt = Interface.upload_folder(args.local_path, args.cos_path)
                logger.info("{folders} folders, {files} files successful, {fail_files} files failed"
                            .format(folders=Interface._folder_num, files=Interface._file_num, fail_files=Interface._fail_num))
            if rt:
                logger.info(change_color("upload all files under \"{file}\" directory successfully".format(file=to_printable_str(args.local_path)), color_green))
                return 0
            else:
                logger.warn(change_color("upload all files under \"{file}\" directory failed".format(file=to_printable_str(args.local_path)), color_red))
                return -1
        else:
            if os.path.isdir(args.local_path):
                logger.warn(change_color("\"{path}\" is a directory, use \'-r\' option to upload it please.".format(path=to_printable_str(args.local_path)), color_red))
                return -1
            if os.path.isfile(args.local_path) is False:
                logger.warn(change_color("cannot stat '%s': No such file or directory" % to_printable_str(args.local_path), color_red))
                return -1
            if Interface.upload_file(args.local_path, args.cos_path) is True:
                logger.info(change_color("upload \"{file}\" successfully".format(file=to_printable_str(args.local_path)), color_green))
                return 0
            else:
                logger.warn(change_color("upload \"{file}\" failed".format(file=to_printable_str(args.local_path)), color_red))
                return -1
        return -1
Ejemplo n.º 18
0
    def get_object_acl(args):
        conf = load_conf()
        client = CosS3Client(conf)
        while args.cos_path.startswith('/'):
            args.cos_path = args.cos_path[1:]
        if not isinstance(args. cos_path, unicode):
            args.cos_path = args.cos_path.decode(fs_coding)
        Interface = client.op_int()

        rt = Interface.get_object_acl(args.cos_path)
        if rt is True:
            return 0
        else:
            logger.warn(change_color("get fail!", color_red))
            return -1
Ejemplo n.º 19
0
 def put_object_acl(args):
     conf = load_conf()
     client = CosS3Client(conf)
     while args.cos_path.startswith('/'):
         args.cos_path = args.cos_path[1:]
     if not isinstance(args. cos_path, unicode):
         args.cos_path = args.cos_path.decode(fs_coding)
     Interface = client.op_int()
     rt = Interface.put_object_acl(args.grant_read, args.grant_write, args.grant_full_control, args.cos_path)
     if rt is True:
         logger.info(change_color("put success!", color_green))
         return 0
     else:
         logger.warn(change_color("put fail!", color_red))
         return -1
Ejemplo n.º 20
0
 def copy(args):
     conf = load_conf()
     client = CosS3Client(conf)
     while args.cos_path.startswith('/'):
         args.cos_path = args.cos_path[1:]
     Interface = client.op_int()
     _, args.cos_path = concat_path(args.source_path, args.cos_path)
     if not isinstance(args.source_path, unicode):
         args.source_path = args.source_path.decode(fs_coding)
     if not isinstance(args.cos_path, unicode):
         args.cos_path = args.cos_path.decode(fs_coding)
     if Interface.copy_file(args.source_path, args.cos_path,
                            args.type) is True:
         return 0
     else:
         return -1
Ejemplo n.º 21
0
def Test():
    conf = CosConfig(Appid="1252448703",
                     Region="cn-north",
                     Access_id=ACCESS_ID,
                     Access_key=ACCESS_KEY)
    client = CosS3Client(conf)

    test_bucket = 'test01'
    file_size = 2  # 方便CI通过
    file_id = str(random.randint(0, 1000)) + str(random.randint(0, 1000))
    file_name = "tmp" + file_id + "_" + str(file_size) + "MB"

    print "Test Get Presigned Download URL "
    url = client.get_presigned_download_url(Bucket=test_bucket, Key='test.txt')
    print url

    print "Test List Buckets"
    response = client.list_buckets()

    copy_source = {'Bucket': 'test01', 'Key': '/test.txt'}
    print "Test Copy Object From Other Bucket "

    response = client.copy_object(Bucket='test04',
                                  Key='test.txt',
                                  CopySource=copy_source)

    print "Test Put Object That Bucket Not Exist " + file_name
    try:
        response = client.put_object(Bucket='test0xx',
                                     Body='T' * 1024 * 1024,
                                     Key=file_name,
                                     CacheControl='no-cache',
                                     ContentDisposition='download.txt')
    except CosServiceError as e:
        print_error_msg(e)

    special_file_name = "对象()*'/. 存![]^&*~储{|}~()"
    print "Test Put Object Contains Special Characters " + special_file_name
    response = client.put_object(Bucket=test_bucket,
                                 Body='S' * 1024 * 1024,
                                 Key=special_file_name,
                                 CacheControl='no-cache',
                                 ContentDisposition='download.txt')

    print "Test Get Object Contains Special Characters " + special_file_name
    response = client.get_object(
        Bucket=test_bucket,
        Key=special_file_name,
    )

    print "Test Delete Object Contains Special Characters " + special_file_name
    response = client.delete_object(Bucket=test_bucket, Key=special_file_name)

    print "Test Put Object " + file_name
    gen_file(file_name, file_size)
    fp = open(file_name, 'rb')
    response = client.put_object(Bucket=test_bucket,
                                 Body=fp,
                                 Key=file_name,
                                 CacheControl='no-cache',
                                 ContentDisposition='download.txt',
                                 Metadata={"x-cos-meta-tiedu": "value1"})
    fp.close()
    os.remove(file_name)

    print "Test Get Object " + file_name
    response = client.get_object(
        Bucket=test_bucket,
        Key=file_name,
    )
    # 返回一个raw stream
    # fp = response['Body'].get_raw_stream()
    # 返回一个generator
    # stream_generator = response['Body'].get_stream(stream_size=1024*512)
    response['Body'].get_stream_to_file('cos.txt')
    if os.path.exists('cos.txt'):
        os.remove('cos.txt')

    print "Test Head Object " + file_name
    response = client.head_object(Bucket=test_bucket, Key=file_name)

    print "Test Head Object " + file_name + "123"
    try:
        response = client.head_object(Bucket=test_bucket,
                                      Key=file_name + "123")
    except CosServiceError as e:
        print_error_msg(e)

    print "Test Put Object ACL " + file_name
    response = client.put_object_acl(Bucket=test_bucket,
                                     Key=file_name,
                                     ACL='public-read-write')

    print "Test Get Object ACL" + file_name
    response = client.get_object_acl(Bucket=test_bucket, Key=file_name)

    print "Test Delete Object " + file_name
    response = client.delete_object(Bucket=test_bucket, Key=file_name)

    print "Test List Objects"
    response = client.list_objects(Bucket=test_bucket)

    print "Test Create Bucket"
    response = client.create_bucket(Bucket='test' + file_id, ACL='public-read')

    print "Test PUT Bucket ACL"
    try:
        response = client.put_bucket_acl(Bucket='test' + file_id,
                                         ACL='public-read-writea')
    except CosServiceError as e:
        print_error_msg(e)

    print "Test GET Bucket ACL"
    response = client.get_bucket_acl(Bucket='test' + file_id, )

    print "Test Delete Bucket"
    response = client.delete_bucket(Bucket='test' + file_id)

    print "Test Head Bucket"
    try:
        response = client.head_bucket(Bucket='test' + file_id)
    except CosServiceError as e:
        print_error_msg(e)

    print "Test Create MultipartUpload"
    response = client.create_multipart_upload(
        Bucket=test_bucket,
        Key='multipartfile.txt',
    )
    uploadid = response['UploadId']

    print "Test Abort MultipartUpload"
    response = client.abort_multipart_upload(Bucket=test_bucket,
                                             Key='multipartfile.txt',
                                             UploadId=uploadid)

    print "Test Create MultipartUpload"
    response = client.create_multipart_upload(
        Bucket=test_bucket,
        Key='multipartfile.txt',
    )
    uploadid = response['UploadId']

    print "Test Upload Part1"
    response = client.upload_part(Bucket=test_bucket,
                                  Key='multipartfile.txt',
                                  UploadId=uploadid,
                                  PartNumber=1,
                                  Body='A' * 1024 * 1024 * 2)

    print "Test Upload Part2"
    response = client.upload_part(Bucket=test_bucket,
                                  Key='multipartfile.txt',
                                  UploadId=uploadid,
                                  PartNumber=2,
                                  Body='B' * 1024 * 1024 * 2)

    print "List Upload Parts"
    response = client.list_parts(Bucket=test_bucket,
                                 Key='multipartfile.txt',
                                 UploadId=uploadid)
    lst = response['Part']

    print "Test Complete MultipartUpload"
    response = client.complete_multipart_upload(Bucket=test_bucket,
                                                Key='multipartfile.txt',
                                                UploadId=uploadid,
                                                MultipartUpload={'Part': lst})
Ejemplo n.º 22
0
import hashlib
import os
import requests
from cos_client import CosS3Client
from cos_client import CosConfig
from cos_exception import CosServiceError

SECRET_ID = os.environ["SECRET_ID"]
SECRET_KEY = os.environ["SECRET_KEY"]
test_bucket = "test01-1252448703"
test_object = "test.txt"
special_file_name = "中文" + "→↓←→↖↗↙↘! \"#$%&'()*+,-./0123456789:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
conf = CosConfig(Region="ap-beijing-1",
                 Secret_id=SECRET_ID,
                 Secret_key=SECRET_KEY)
client = CosS3Client(conf)


def get_raw_md5(data):
    m2 = hashlib.md5(data)
    etag = '"' + str(m2.hexdigest()) + '"'
    return etag


def gen_file(path, size):
    _file = open(path, 'w')
    _file.seek(1024 * 1024 * size)
    _file.write('cos')
    _file.close()