def _deserialize_output()

in alibabacloud_oss_v2/presigner.py [0:0]


def _deserialize_output(client: _SyncClientImpl, op_output: OperationOutput) -> PresignResult:
    result = PresignResult()
    result.method = op_output.http_response.request.method
    result.url = op_output.http_response.request.url
    result.expiration = op_output.op_metadata.get('expiration_time', None)
    result.signed_headers = {}

    _options = getattr(client, '_options', None)
    if _options:
        s = getattr(_options, 'signer', None)
        if s:
            for k, v in op_output.http_response.request.headers.items():
                if s.is_signed_header(k):
                    result.signed_headers[k] = v

        if result.expiration is not None and isinstance(s, SignerV4):
            now = datetime.datetime.now(datetime.timezone.utc)
            if (result.expiration - now) > datetime.timedelta(days=7):
                raise exceptions.PresignExpirationError()

    return result