def deserialize_output_headers()

in alibabacloud_oss_v2/serde.py [0:0]


def deserialize_output_headers(result: Model, op_output: OperationOutput) -> Model:
    """deserialize output headers
    """
    attributes = getattr(result, '_attribute_map')
    headers = op_output.headers or {}
    dict_attrs=[]
    for attr, attr_desc in attributes.items():
        if attr_desc.get('tag', '') != 'output':
            continue
        attr_key = attr_desc.get('rename', attr)
        attr_type = attr_desc.get('type', 'str')
        if 'dict' in attr_type:
            dict_attrs.append(attr)
            continue
        value = _deserialize_to_any(
            value=headers.get(attr_key, None), atype=attr_type)
        if value is not None:
            setattr(result, attr, value)

    for  attr in  dict_attrs:
        attr_desc = attributes.get(attr)
        attr_key = attr_desc.get('rename', attr)
        dict_value = CaseInsensitiveDict()
        for k in headers.keys():
            if k.lower().startswith(attr_key):
                dict_value[k[len(attr_key):]] = headers.get(k)
        if len(dict_value) > 0:
            setattr(result, attr, dict_value)