def deserialize_encode_type()

in alibabacloud_oss_v2/serde_utils.py [0:0]


def deserialize_encode_type(result: serde.Model, _: OperationOutput) -> serde.Model:
    """
    do url decode
    """

    if not hasattr(result, 'encoding_type'):
        raise exceptions.DeserializationError(
            error=f'{result.__class__} has not encoding_type attribute')

    if result.encoding_type is None or result.encoding_type != 'url':
        return result

    if isinstance(result, ListObjectsResult):
        # fields
        fields = ['prefix', 'marker', 'delimiter', 'next_marker']

        # Contents.Key
        if isinstance(result.contents, List):
            for i, _ in enumerate(result.contents):
                result.contents[i].key = unquote(result.contents[i].key)

        # CommonPrefixes.Prefix
        if isinstance(result.common_prefixes, List):
            for i, _ in enumerate(result.common_prefixes):
                result.common_prefixes[i].prefix = unquote(
                    result.common_prefixes[i].prefix)

    elif isinstance(result, ListObjectsV2Result):
        # fields
        fields = ['prefix', 'start_after', 'continuation_token', 'delimiter', 'next_continuation_token']

        # Contents.Key
        if isinstance(result.contents, List):
            for i, _ in enumerate(result.contents):
                result.contents[i].key = unquote(result.contents[i].key)

        # CommonPrefixes.Prefix
        if isinstance(result.common_prefixes, List):
            for i, _ in enumerate(result.common_prefixes):
                result.common_prefixes[i].prefix = unquote(
                    result.common_prefixes[i].prefix)

    elif isinstance(result, ListObjectVersionsResult):
        # fields
        fields = ['prefix', 'key_marker', 'delimiter', 'next_key_marker']

        # Version.Key
        if isinstance(result.version, List):
            for i, _ in enumerate(result.version):
                result.version[i].key = unquote(result.version[i].key)

        # DeleteMarker.Key
        if isinstance(result.delete_marker, List):
            for i, _ in enumerate(result.delete_marker):
                result.delete_marker[i].key = unquote(result.delete_marker[i].key)

        # CommonPrefixes.Prefix
        if isinstance(result.common_prefixes, List):
            for i, _ in enumerate(result.common_prefixes):
                result.common_prefixes[i].prefix = unquote(
                    result.common_prefixes[i].prefix)

    elif isinstance(result, DeleteMultipleObjectsResult):
        # fields
        fields = []

        # deleted_objects.Key
        if isinstance(result.deleted_objects, List):
            for i, _ in enumerate(result.deleted_objects):
                result.deleted_objects[i].key = unquote(result.deleted_objects[i].key)

    elif isinstance(result, InitiateMultipartUploadResult):
        # fields
        fields = ['key']

    elif isinstance(result, CompleteMultipartUploadResult):
        # fields
        fields = ['key']

    elif isinstance(result, ListMultipartUploadsResult):
        # fields
        fields = ['key_marker', 'next_key_marker', 'prefix', 'delimiter']

        # Upload.Key
        if isinstance(result.uploads, List):
            for i, _ in enumerate(result.uploads):
                result.uploads[i].key = unquote(result.uploads[i].key)

    elif isinstance(result, ListPartsResult):
        # fields
        fields = ['key']

    else:
        fields = []

    for field in fields:
        val = getattr(result, field)
        if val is not None:
            setattr(result, field, unquote(val))

    return result