public static void TransformForEncryption()

in DynamoDbEncryption/runtimes/net/src/Interceptor.cs [19:223]


  public static void TransformForEncryption(IExecutionContext executionContext, DynamoDbEncryptionTransforms transform)
  {
    AmazonWebServiceRequest originalInput = null;
    if (executionContext.ResponseContext.Response == null)
    {
      executionContext.RequestContext.ContextAttributes["originalInput"] =
        executionContext.RequestContext.OriginalRequest;
    }
    else
    {
      originalInput = executionContext.RequestContext.ContextAttributes["originalInput"] as AmazonWebServiceRequest;
    }

    if (executionContext.RequestContext.OriginalRequest is BatchExecuteStatementRequest batchExecuteStatementRequest)
    {
      if (executionContext.ResponseContext.Response is BatchExecuteStatementResponse response)
      {
        var output = transform.BatchExecuteStatementOutputTransform(new BatchExecuteStatementOutputTransformInput
        { OriginalInput = originalInput as BatchExecuteStatementRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.BatchExecuteStatementInputTransform(new BatchExecuteStatementInputTransformInput
        { SdkInput = batchExecuteStatementRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is BatchGetItemRequest batchGetItemRequest)
    {
      if (executionContext.ResponseContext.Response is BatchGetItemResponse response)
      {
        var output = transform.BatchGetItemOutputTransform(new BatchGetItemOutputTransformInput
        { OriginalInput = originalInput as BatchGetItemRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.BatchGetItemInputTransform(new BatchGetItemInputTransformInput
        { SdkInput = batchGetItemRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is BatchWriteItemRequest batchWriteItemRequest)
    {
      if (executionContext.ResponseContext.Response is BatchWriteItemResponse response)
      {
        var output = transform.BatchWriteItemOutputTransform(new BatchWriteItemOutputTransformInput
        { OriginalInput = originalInput as BatchWriteItemRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.BatchWriteItemInputTransform(new BatchWriteItemInputTransformInput
        { SdkInput = batchWriteItemRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is DeleteItemRequest deleteItemRequest)
    {
      if (executionContext.ResponseContext.Response is DeleteItemResponse response)
      {
        var output = transform.DeleteItemOutputTransform(new DeleteItemOutputTransformInput
        { OriginalInput = originalInput as DeleteItemRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.DeleteItemInputTransform(new DeleteItemInputTransformInput
        { SdkInput = deleteItemRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is ExecuteStatementRequest executeStatementRequest)
    {
      if (executionContext.ResponseContext.Response is ExecuteStatementResponse response)
      {
        var output = transform.ExecuteStatementOutputTransform(new ExecuteStatementOutputTransformInput
        { OriginalInput = originalInput as ExecuteStatementRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.ExecuteStatementInputTransform(new ExecuteStatementInputTransformInput
        { SdkInput = executeStatementRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is ExecuteTransactionRequest executeTransactionRequest)
    {
      if (executionContext.ResponseContext.Response is ExecuteTransactionResponse response)
      {
        var output = transform.ExecuteTransactionOutputTransform(new ExecuteTransactionOutputTransformInput
        { OriginalInput = originalInput as ExecuteTransactionRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.ExecuteTransactionInputTransform(new ExecuteTransactionInputTransformInput
        { SdkInput = executeTransactionRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is GetItemRequest getItemRequest)
    {
      if (executionContext.ResponseContext.Response is GetItemResponse response)
      {
        var output = transform.GetItemOutputTransform(new GetItemOutputTransformInput
        { OriginalInput = originalInput as GetItemRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.GetItemInputTransform(new GetItemInputTransformInput { SdkInput = getItemRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is PutItemRequest putItemRequest)
    {
      if (executionContext.ResponseContext.Response is PutItemResponse response)
      {
        var output = transform.PutItemOutputTransform(new PutItemOutputTransformInput
        { OriginalInput = originalInput as PutItemRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.PutItemInputTransform(new PutItemInputTransformInput { SdkInput = putItemRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is QueryRequest queryRequest)
    {
      if (executionContext.ResponseContext.Response is QueryResponse response)
      {
        var output = transform.QueryOutputTransform(new QueryOutputTransformInput
        { OriginalInput = originalInput as QueryRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.QueryInputTransform(new QueryInputTransformInput { SdkInput = queryRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is ScanRequest scanRequest)
    {
      if (executionContext.ResponseContext.Response is ScanResponse response)
      {
        var output = transform.ScanOutputTransform(new ScanOutputTransformInput
        { OriginalInput = originalInput as ScanRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.ScanInputTransform(new ScanInputTransformInput { SdkInput = scanRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is TransactGetItemsRequest transactGetItemsRequest)
    {
      if (executionContext.ResponseContext.Response is TransactGetItemsResponse response)
      {
        var output = transform.TransactGetItemsOutputTransform(new TransactGetItemsOutputTransformInput
        { OriginalInput = originalInput as TransactGetItemsRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.TransactGetItemsInputTransform(new TransactGetItemsInputTransformInput
        { SdkInput = transactGetItemsRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is TransactWriteItemsRequest transactWriteItemsRequest)
    {
      if (executionContext.ResponseContext.Response is TransactWriteItemsResponse response)
      {
        var output = transform.TransactWriteItemsOutputTransform(new TransactWriteItemsOutputTransformInput
        { OriginalInput = originalInput as TransactWriteItemsRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.TransactWriteItemsInputTransform(new TransactWriteItemsInputTransformInput
        { SdkInput = transactWriteItemsRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
    else if (executionContext.RequestContext.OriginalRequest is UpdateItemRequest updateItemRequest)
    {
      if (executionContext.ResponseContext.Response is UpdateItemResponse response)
      {
        var output = transform.UpdateItemOutputTransform(new UpdateItemOutputTransformInput
        { OriginalInput = originalInput as UpdateItemRequest, SdkOutput = response });
        AssignResponse(executionContext, output.TransformedOutput);
      }
      else
      {
        var output = transform.UpdateItemInputTransform(new UpdateItemInputTransformInput
        { SdkInput = updateItemRequest });
        executionContext.RequestContext.OriginalRequest = output.TransformedInput;
      }
    }
  }