def stream_kwargs_from_args()

in src/aws_encryption_sdk_cli/__init__.py [0:0]


def stream_kwargs_from_args(args, crypto_materials_manager):
    # type: (Namespace, CryptoMaterialsManager) -> STREAM_KWARGS
    """Builds kwargs object for aws_encryption_sdk.stream based on argparse
    arguments and existing CryptoMaterialsManager.

    :param args: Parsed arguments from argparse
    :type args: argparse.Namespace
    :param crypto_materials_manager: Existing CryptoMaterialsManager
    :type crypto_materials_manager: aws_encryption_sdk.materials_manager.base.CryptoMaterialsManager
    :returns: Translated kwargs object for aws_encryption_sdk.stream
    :rtype: dict
    """
    stream_args = {"materials_manager": crypto_materials_manager, "mode": args.action}
    # Look for additional arguments only if encrypting
    if args.action == "encrypt":
        stream_args["encryption_context"] = args.encryption_context
        if args.algorithm is not None:
            stream_args["algorithm"] = getattr(aws_encryption_sdk.Algorithm, args.algorithm)
        if args.frame_length is not None:
            stream_args["frame_length"] = args.frame_length

    if args.commitment_policy is None:
        stream_args["commitment_policy"] = CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT
    elif args.commitment_policy == "require-encrypt-require-decrypt":
        stream_args["commitment_policy"] = CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT
    elif args.commitment_policy == "require-encrypt-allow-decrypt":
        stream_args["commitment_policy"] = CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT
    elif args.commitment_policy == "forbid-encrypt-allow-decrypt":
        stream_args["commitment_policy"] = CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT

    if args.max_length is not None:
        stream_args["max_body_length"] = args.max_length
    return stream_args